سؤال

أنا أستخدم OpenLayers لعرض خرائط OpenStreetMap. (رغم ذلك، سأفترض أن هذا يجب أن يكون عاما بما يكفي للعمل في أي منتج خريطة ...)

أنا أعرض بعض تراكبات ناقلات متطورة للغاية، وقد أثبتت مبلغ وحل الميزات التي أعود بها من الخادم عبر Geojson إلى Overlay الكثير بالنسبة للعديد من أجهزة الكمبيوتر.

ما أود القيام به الآن بدلا من ذلك هو إرسال البيانات التي تم إرسالها فقط دقة التكبير الحالي. هذا يجب أن يكون من السهل نسبيا القيام باستخدام getResolution و calculateBounds طرق في Map هدف. calculateBounds إرجاع كائن حدود ثم يمكن تحويله بين إسقاط الخريطة وعرض الإسقاط.

كيف يمكنني تحويل الدقة إلى الإسقاط المطلوب (4326 في هذه الحالة)؟ هل هناك طريقة مبنية للقيام بذلك أو هل يجب علي تشغيل القرار مقابل صيغة معروفة؟

هل كانت مفيدة؟

المحلول

يمكنك استخدام proj4js. لتحويل تنسيق النظم على العميل.

نصائح أخرى

ماذا عن الحد من النطاق الذي سيستسم به طبقة متجه Geojson الخاصة بك؟

http://dev.openlayers.org/docs/files/openlayers/layer-js.html#openlayers.layer.maxscale.

ثم يجب أن يؤدي طلب OpenLayers Ajax إلى الخادم فقط إلى ما بعد هذا المقياس. اختر مستوى مقياس OpenSteTeetMaps / Zoom يتوافق معه عندما تريد إظهار طبقة المتجهات، وقم بتعيين MaxScale وفقا لذلك.

يجب أن ترسل الطلبات تلقائيا حدود عرض الخريطة الحالي إلى الخادم الخاص بك للحصول على الميزات ذات الصلة.

ربما أسيء فهم معضلك على الرغم من. إذا كنت تريد صيغ الدقة هذه المقالة تصفها:

http://msdn.microsoft.com/en-us/library/aa940990.aspx.

تحديث

يمكنك تنفيذ استراتيجية تجميع في OpenLayers. أعتقد أن هذا يجب أن تقلل من وقت تقديم الوقت، على الرغم من أنني أفترض أنه سيتم إرجاع نفس الكمية من البيانات من قاعدة البيانات.

http://dev.openlayers.org/releases/openlayers-2.7/doc/apidocs/files/openlayers/stratesgy/cluster-js.html.

تحقق من المثال هنا:

http://openlayers.org/dev/examples/strategy-cluster.html.

لتجنب وجود نقاط مختلفة الحجم، يمكنك تعيين PointRadius: "$ {radius}" ثابت.

أخيرا، سيكون بديلا استخدام خدمة WMS بدلا من Geojson، فسيكون الخادم إرجاع صور بحجم ثابت فقط.

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