تغيير الإسقاط في خريطة OpenLayers
-
28-09-2019 - |
سؤال
أريد تعيين "EPSG: 4326" كإسقاط لخريطة OpenLayers ، لكن عندما أحاول ذلك ، أحصل دائمًا على "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؟
المحلول
إنه OsMarender الذي يحتوي على إسقاط 900913 المتشددين ، لا شيء يجب فعله حيال ذلك. ولكن هل فكرت في أخذ الأشياء في الاتجاه الآخر؟ تحويل الإحداثيات أو الطبقة إلى EPSG: 900913؟ تحقق من الوثائق هنا: http://docs.openlayers.org/library/spherical_mercator.html
نصائح أخرى
كما Milovanderlinden لقد أشار ، عليك تحويل قيم خط العرض/خط الطول (كما هو مستخدم في خرائط Google أو Bing) قبل تطبيقها في طبقات OpenStreetMap مثل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);
ما هي الطبقة الأساسية. هل تحاول رسم خرائط GMAPS أو Bing؟ إذا كان الأمر كذلك ، فقد يحاول OpenLayers الحصول على البيانات لمطابقة إسقاط الطبقة الأساسية بحيث يصطف بشكل صحيح.
ليست علة، ولها ميزة. Spherical Mercator عبارة عن إسقاط مربع بكسل ، لذلك يمكن وضع ميزات ناقلات OpenLayers بدقة على الخريطة-ليس هذا هو الحال مع WSG-84 (EPSG: 4326)