3

私はうまくやることができます:

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

Google形式(メートル単位)のポイントまでですが、逆にしたい場合:

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

4326 (通常の緯度/経度形式) になると、いくつかの問題が発生します。

変換を行うと、負の値はすべて NaN (数値ではない) になるようです。私が理解していない逆変換について何かありますか?

編集:さらに悪いことに、負の値がない場合、座標がずれているように見えます。画面に正方形を描画して座標を取得し、それらの座標をデータベースに保存して後でロードします。アフリカの先端 (正の座標) の近くに正方形を描くことができ、それがロードされると、大西洋のアフリカの上部近くになります。絶対に悪いことをしている……。

編集: これが私のコードです: http://pastie.org/911524

具体的には、これがマップを初期化する方法です。

 var navControl = new OpenLayers.Control.Navigation();
                 map = new OpenLayers.Map('map', {

                // restrictedExtent: bounds.clone(),


                 }); 
       //actually draws the map 
        layerMapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik", {
        displayOutsideMaxExtent: false,
        wrapDateLine: true
        //numZoomLevels: 10
        });
4

2 に答える 2

2

ああ、私はそれを理解しました:

コードのある時点で、緯度と経度を混同し、すべてが台無しになりました。

于 2010-04-09T17:18:41.813 に答える
2

本当にすべての座標変換機能を使用したい場合は、proj4js http://proj4js.org/完全な座標変換フレームワークで openlayers を強化する必要があります。

于 2010-05-18T22:51:31.400 に答える