質問

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に投影を設定するにはどうすればよいですか?

役に立ちましたか?

解決

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

他のヒント

として ミロヴァンダーリンデン OpenStreetMapレイヤーに適用できるようにするには、緯度/経度値(GoogleまたはBingマップで使用される)を変換する必要があります。OsmarenderまたMapnik:

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);

基本層は何ですか。 GMAPやBingマップを描画しようとしていますか?もしそうなら、OpenLayersは、基本レイヤーの投影と一致するようにデータを取得しようとする可能性があります。

それはバグではなく、機能です。球状のメルカトルは平方ピクセルの投影であるため、OpenLayersベクターの特徴をマップ上に正確に配置できます - これはWSG-84の場合はそうではありません(EPSG:4326)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top