سؤال

أريد تعيين "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)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top