سؤال

يمكنني أن أفعل بشكل ناجح:

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/ إطار تحويل الإحداثيات الكامل.

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