半径100mの円を表示
GoogleMap
var p = new google.maps.LatLng(y,x);
var options = {
clickable: false,
strokeColor: "#FF0000",
strokeOpacity: 1.0,
strokeWeight: 4,
fillOpacity: 0.0,
center: p,
radius: Number(100)
};
var circle = new google.maps.Circle(options);
circle.setMap(get_map());
OpenLayers(その1)
var style = {
strokeColor: '#FF0000',
strokeOpacity: 1.0,
strokeWidth: 5,
fillOpacity: 0
};
var lonlat = layer_lonlat_to_map_lonlat(x, y);
var circle = OpenLayers.Geometry.Polygon.createRegularPolygon
(
new OpenLayers.Geometry.Point(lonlat.lon, lonlat.lat),
100,
20,
0
);
var feature= new OpenLayers.Feature.Vector(circle, null, style);
layer_vector.addFeatures(feature);
何か半径が違う!
OpenLayers(その2)
以下にしたがって各頂点の座標を求めてVectorとして表示
var apex = 40;
var latlon = new OpenLayers.LonLat(x, y);
var angle;
var new_lonlat;
var points = [];
for (var i = 0; i < apex+1; i++) {
angle = (i * 360 / apex) + 0;
new_lonlat = OpenLayers.Util.destinationVincenty(latlon, angle, radius);
points.push([new_lonlat.lon, new_lonlat.lat]);
}
黒い円(ちょっと切れているが)

どうやら、こちらのほうがよい。
OpenLayers.Util.destinationVincentyは測地線からの距離と角度を指定して座標を求めるらしい。
今度、値を確認しよう


