سؤال
يمكنني أن أفعل بشكل ناجح:
point.transform(new OpenLayers.Projection("EPSG:900913"), new OpenLayers.Projection("EPSG:4326"));
إلى حد ما في تنسيق Google (بالأمتار) ، ولكن عندما أريد أن أفعل العكس:
point.transform(new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:900913"));
إلى حد ما في 4326 (تنسيق LAT/LON العادي) ، أواجه بعض المشكلات.
يبدو أن أي قيمة سالبة تصبح نان (وليس رقمًا) عندما أقوم بالتحول. هل هناك شيء حول التحول في الاتجاه المعاكس لا أفهمه؟
تحرير: والأسوأ من ذلك ، عندما لا يكون لدي أي قيم سلبية ، تبدو الإحداثيات متوقفة. أحصل على الإحداثيات عن طريق رسم مربع على الشاشة ، ثم حفظ تلك الإحداثيات في قاعدة بيانات وتحميلها لاحقًا. يمكنني رسم مربع بالقرب من طرف إفريقيا (إحداثيات إيجابية) ، ثم عندما يتم تحميله بالقرب من قمة إفريقيا ، في المحيط الأطلسي. أنا بالتأكيد أفعل شيئًا خاطئًا ....
تحرير: ها هو الكود الخاص بي: http://pastie.org/911524
على وجه التحديد: هذه هي الطريقة التي أهيئ بها خريطتي:
var navControl = new OpenLayers.Control.Navigation();
map = new OpenLayers.Map('map', {
// restrictedExtent: bounds.clone(),
});
//actually draws the map
layerMapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik", {
displayOutsideMaxExtent: false,
wrapDateLine: true
//numZoomLevels: 10
});
المحلول
آه ، لقد اكتشفت ذلك:
عند نقطة واحدة في الكود الخاص بي ، كنت في حيرة من أمري خطوط الطول والطول ، لقد كانت تعبث كل شيء.
نصائح أخرى
إذا كنت ترغب حقًا في استخدام جميع طاقة التحويل الإحداثي ، فيجب عليك تحسين OpenLayers مع Proj4JS http://proj4js.org/ إطار تحويل الإحداثيات الكامل.