OpenLayersマップで投影を変更します
-
28-09-2019 - |
質問
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)
所属していません StackOverflow