かなり混乱しています。言いたいことはあります。
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 (緯度 / 経度) に変換されます。