Openlayersでベク​​ターレイヤーの座標を地図の緯度と経度に変換する方法 質問する

Openlayersでベク​​ターレイヤーの座標を地図の緯度と経度に変換する方法 質問する

かなり混乱しています。言いたいことはあります。

x= -12669114.702301
y= 5561132.6760608

これは、DrawFeature コントローラーを使用してベクター レイヤーに正方形を描画した結果です。

数字は...うーん...かなり大きいようですが、うまく機能しているようです。なぜなら、後で同じ点がすべて揃った正方形を描くと、同じ位置にあるので、正しいはずだと私は考えています。

問題は、この点を緯度と経度に変換しようとするときです。

私が使用しているのは:

map.getLonLatFromPixel(pointToPixel(points[0]));

ここで、points[0] はジオメトリ ポイントであり、pointToPixel 関数は任意のポイントを取得してピクセルに変換します (getLonLatFromPixel にはピクセルが必要であるため)。これは、ポイントの x を取得してピクセルの x にするなど、単純に行われます。

取得した緯度と経度は次のようになります。

lat: -54402718463.864
lng: -18771380.353223

これは明らかに間違っています。本当に困惑しています。次を使用してこのオブジェクトを投影してみます。

.transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());

しかし、私はそれを本当に理解していないし、とにかくそれを間違ってやったと確信しています。

私のコードはこちらです:http://pastie.org/909644

ちょっと困惑しています。座標は一貫しているようです。再利用して同じ結果を得ることができるからです...しかし、openLayers Web サイトで見ているどの例よりもずっと大きいようです...

ベストアンサー1

コードによると、使用している投影法は EPSG:900913 で、これは Google が使用している投影法です。この投影法の単位はメートルで、ポイントに対して取得される値は完全に正確です。

x= -12669114.702301 (longitude)
y= 5561132.6760608 (latitude)

この値はピクセルではなく、EPSG:900913投影の座標であり、正しい値です(アイダホそうでなければ、どこかに問題があることになります)

確認するには、http://proj4js.org/座標を EPSG:900913 から WGS84 (緯度/経度) に変換すると、次のようになります。

x = -113.8085937334033 (longitude)
y = 44.615123313472 (latitude)

おそらくこれが期待する値です。ポイント座標から値を取得する場合は、次のようにします。

point.transform(new OpenLayers.Projection("EPSG:900913"), new OpenLayers.Projection("EPSG:4326"));

これにより、座標が Google 投影から WGS84 (緯度 / 経度) に変換されます。

おすすめ記事