[OSGeoJapan-discuss] OpenLayersの円の描画について
カーネル 垂水
tarumi @ kk-kernel.co.jp
2014年 10月 2日 (木) 18:23:33 PDT
喜多様へ
垂水です
不具合は解決しているはずです。
以下の関数は円を形成するLONLATの配列を返します。
あとはEPSG900913に変換してポリゴンや、ポリラインで描画してください
function get_circle_points(x, y, radius){
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]);
}
return points;
};
(2014/10/03 9:13), 喜多耕一 wrote:
> 垂水様
>
> 北海道の喜多です。
> ありがとうございます。
> 垂水さんのブログも参考にはしていたのですが、円が切れてしまっていたのは
> 解決してますか?
> もし解決していましたら、コードなど教えていただければ助かります。
>
> また、このように描画した円をkmlに出力したいのですが、可能でしょうか?
>
> よろしくお願いします。
>
> 北海道 喜多耕一
>
> 2014年10月3日金曜日、カーネル 垂水<tarumi @ kk-kernel.co.jp
> <mailto:tarumi @ kk-kernel.co.jp>> さんは書きました:
>
> 垂水といいます。
>
> OpenLayers.Util.destinationVincenty
>
> を使って円を形成する各座標を求めるとよいです。
>
> (2014/10/02 21:09), 喜多耕一 wrote:
>> みなさま
>>
>> 北海道の喜多です。
>> 現在、OpenLayersで地理院地図を表示して、そこに40kmの円を描画する
>> プログラムを作っていま す。
>> Googlemap APIでは、簡単に出来たのですが、OpenLayersで
>> OpenLayers.Geometry.Polygon.createRegularPolygonで、redius因数に
>> 40000とし ても少し小さな円が出来てしまいます。
>> 北海道南部では、1.345くらいかけるとちょうどいいのですが、北や南に
>> 移動すると大きさが変わってしまい ます。
>> redius因数の単位がmではないのでしょうか?
>> Wikiページには、「地図の単位」としか記載されていません。
>> 何か係数をかければいいのか、単位が違うのか、わからなくて困ってい
>> ます。
>> どなたかご教授下さい。
>>
>> 地図の座標系は900913で、表示の座標系は4326です。
>>
>> よろしくお願いします。
>>
>> 北海道 喜多耕一
>>
>>
>> _______________________________________________
>> OSGeoJapan-discuss mailing list
>> OSGeoJapan-discuss @ lists.osgeo.org <javascript:_e(%7B%7D,'cvml','OSGeoJapan-discuss @ lists.osgeo.org');>
>> http://lists.osgeo.org/mailman/listinfo/osgeojapan-discuss
>
-------------- next part --------------
HTML$B$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B...
URL: <http://lists.osgeo.org/pipermail/osgeojapan-discuss/attachments/20141003/d998f0e7/attachment-0001.html>
More information about the OSGeoJapan-discuss
mailing list