3

OpenLayers マップの射影として「EPSG:4326」を設定したいのですが、実行しようとすると常に「EPSG:900913」になります。

function init() {

    var options = {
            projection: new OpenLayers.Projection("EPSG:4326")  // ignored
    };

    map = new OpenLayers.Map('map', options);

    var layer = new OpenLayers.Layer.OSM.Osmarender("Osmarender");
    map.addLayer(layer);

    ...

    alert(map.getProjection());  // returns "EPSG:900913"

    ...

}

ベースマップはオープンストリートマップ。

プロジェクションを EPSG:4326 に設定するにはどうすればよいですか?

4

4 に答える 4

5

milovanderlindenが指摘したように、またはのような OpenStreetMap レイヤーに適用する前に、(Google または Bing マップで使用されるように) 緯度/経度の値を変換する必要があります。OsmarenderMapnik

var datapoint = new OpenLayers.LonLat(-71.0, 42.0);
var proj_1 = new OpenLayers.Projection("EPSG:4326");
var proj_2 = new OpenLayers.Projection("EPSG:900913");
datapoint.transform(proj_1, proj_2);
于 2010-07-29T21:59:56.440 に答える
2

ハードコーディングされた 900913 プロジェクションを持つのは Osmarender であり、それについては何もしません。しかし、物事を逆に考えたことはありますか?座標またはレイヤーを EPSG:900913 に変換しますか? こちらのドキュメントを確認してください: http://docs.openlayers.org/library/spherical_mercator.html

于 2010-05-18T14:56:14.833 に答える
0

これはバグではなく、機能です。球状メルカトル図法は正方形ピクセルの投影であるため、openlayers ベクター フィーチャをマップ上に正確に配置できます - これは WSG-84 には当てはまりません (EPSG:4326)

于 2010-08-25T13:58:50.820 に答える
0

ベースレイヤーとは。GMaps または Bing Maps で描画しようとしていますか? その場合、OpenLayers はデータをベース レイヤーのプロジェクションと一致させようとしている可能性があるため、適切に整列されます。

于 2010-04-21T20:55:40.420 に答える