[Javascript] OpenLayers مقابل خرائط جوجل؟


Answers

انها ليست بالضرورة مسألة OpenLayers أو خرائط جوجل. يمكنك بعد كل شيء استخدام خرائط Google لخريطة الخريطة في OpenLayers. بعض الإجابات المحددة أكثر:

لماذا OpenLayers؟

  • يمكن لـ OpenLayers دمج الخرائط من مصادر مختلفة (خرائط Google الخلفية ، تراكبات WMS ، بيانات المتجه من ملفات KML أو GML أو WFS وغيرها)
  • يمكنك نمط OpenLayers أكثر بكثير من يمكنك خرائط جوجل
  • المصدر المفتوح ، يمكنك التحقق من التعليمات البرمجية المصدر عند تصحيح الأخطاء
  • إذا كنت بحاجة إلى دقة عالية في الخرائط ، فاستخدم OpenLayers بخلفية محطة خوادم مناسبة بدلاً من خرائط Google للحصول على عرض أفضل للخرائط (تفترض خرائط Google أن الأرض هي المجال المثالي)

المزالق

  • إذا كنت تريد استخدام بيانات متجه (WFS) من خادم آخر فأنت تحتاج إلى بروكسي ، نظرًا لقيود البرمجة النصية عبر الموقع

أداء

  • يعتمد بشكل رئيسي على سرعة خلفية الخريطة
  • عرض العديد من ميزات المتجه (الحد المعتمد على المتصفح ، ولكن لنقل> 200 في عرض واحد) يستغرق وقتًا ، ولكن هذا أكثر شيء متصفحًا من مشكلة في OpenLayers

أطر جافا سكريبت

  • إلقاء نظرة على GeoExt ، وهو ExtJS + OpenLayers ، على سبيل المثال

الخرائط المتاحة

  • لا يأتي OpenLayers مع خلفية خريطة. يمكنك استخدام خرائط جوجل ، وخرائط ياهو ، MS Virtual Earth الخ ، أو أي WMS وخدمة WFS yuo لديك
Question

لقد استخدمت خرائط جوجل عدة مرات ، ولكن ما يتساءل عن OpenLayers .
قبل البدء في أي نوع من الترميز ، إليك سؤالان يتبادران إلى ذهني ،

  • لماذا أستخدم OpenLayers بدلاً من خرائط Google؟
    • باستثناء ترخيص OSS ، على أي حال
    • هل واجهت أي موقف توصي فيه مطلقًا بعدم استخدام OpenLayers؟
    • لقد بحثت عن "OpenLayers" على ؛ لا توجد اجابات كثيرة. هل هذا يعني أن هذا الحل لا يستخدم كثيرًا؟ هل يمكن أن تكون مشكلة بالنسبة للبقاء على المدى الطويل للمشروع؟
  • لأولئك منكم الذين استخدموا بالفعل OpenLayers: هل هناك أي مشاكل / مشاكل مشتركة قد أواجهها؟
    • ماذا عن استخدام إطار JavaScript به؟ لقد رأيت أنه يستخدم Prototype ، وأعرف Prototype ، بحيث يكون موافقًا. ولكن ماذا عن استخدام شيء آخر مثل MooTools ؟ (وهو غير متوافق مع Prototype ، BTW)
    • هل هناك أي نوع من المشاكل المتعلقة بالسرعة والأداء؟ أحتاج إلى أن يكون طلبي مستجيبًا ولا أستطيع الانتظار لساعات حتى يتم عرض الخريطة.
  • هل هناك خرائط متاحة للعديد من الأماكن ، أم هناك الكثير من المفقودين؟
    • هذا هو ، أنا في فرنسا ، وأحتاج إلى طلبي للعمل على الأقل للمدن الكبرى ... فهل هذا أمر جيد؟
    • إذا لم يكن الأمر كذلك ، هل من السهل العثور على طبقات ومرئيات لـ OpenLayers ودمجها؟
  • هل هناك أي نوع من API لعرض الطرق؟
    • على سبيل المثال ، لعرض الطرق ذات الإتجاه الواحد فقط.
    • إذا كانت الإجابة نعم ، كيف يمكنني أن أفعل ذلك؟ هل يجب أن يكون لديّ نوع من الملفات التي تحتوي على معلومات عن هذه الطرق ، ومن ثم ، اعرضها على الخريطة بنفسي؟
  • هل تعرف أي برنامج تعليمي جيد على OpenLayers؟

لم أحاول حتى الآن ، هذه ليست سوى من الأسئلة الزرقاء ...




لقد استخدمت كلا واجهات برمجة التطبيقات. أقوم بعمل برنامج للشركات وهذا البرنامج يتطلب رسم الخرائط ولكن ليس كل العملاء لديهم ترخيص GoogleMaps ، لذلك أحتاج إلى دعم كلا النوعين من الخرائط.

لقد أعددت واجهة برمجة تطبيقات مشتركة لاستخلاص الاختلافات بينها واسمحوا لي أن أخبرك أن بعض الأشياء يسهل القيام بها في واحدة من الأخرى. مثل الحد من حدود المكان الذي يمكنك فيه تغيير الخريطة ، يكون الأمر أسهل بكثير في OpenLayers ، ولكن استخدام heatmaps أسهل في GoogleMaps (يتم دعمه رسميًا من قبل google ، على عكس المكونات الإضافية المتاحة في OpenLayers).

  1. يدعم OpenLayers الخرائط بلا اتصال بالانترنت. بعض المستخدمين في شبكات إنترانت خاصة بدون اتصال بالإنترنت.

  2. يحتوي GoogleMaps على اثنين فقط من الإضافات ، MarkCluster و Spiderfier التي تجعل من الممكن تصور عدد كبير من العلامات.

  3. تتميز GoogleMaps InfoWindows بأنها أسهل استخدامًا ولها إمكانية استخدام أفضل من OpenLayers.Popups. هذه هي النوافذ الصغيرة التي يمكن فتحها عند النقر في علامة. GoogleMaps InfoWindows هي أيضا أكثر جمالا بشكل افتراضي ، عليك القيام ببعض CSS المغلق مع النوافذ المنبثقة.

  4. يحتوي GoogleMaps على streetview وهو أمر مفيد في بعض الأحيان.

  5. يحتوي GoogleMaps على المزيد من الميزات التي قد تحتاج إليها. على الرغم من وجود العديد من الميزات في OpenLayers أيضًا ، ولكن غير معتمد رسميًا.

عادة في النهاية ، يجب أن تذهب مع OpenLayers بسبب انخفاض الصداع الذي قد تحصل عليه من الترخيص واستخدام النطاق الترددي من googlemaps. كلا التعامل مع الخرائط الأساسية (أي عرض علامات على أعلى الخريطة) بشكل جيد للغاية. ما لم تتمكن من العثور على ميزة معينة تحتاج إليها من واحدة غير موجودة على الآخر ، يجب أن تذهب إلى OpenLayers. راجع this للحصول على مزيد من المعلومات حول فوترة googlemaps ومتى يمكنك استخدامها مجانًا.

كما يحتوي GoogleMaps أيضًا على نوع الموقع الجغرافي الأساسي الخاص به مثل "LatLng" ، ويستخدم Openlayers "LonLat" ، مما يدفعني إلى الشعور بالقلق لأنني أظل أخطأ في ترتيب المعلمات في استدعاءات الدوال.




هناك أمران أود إضافتهما ، من منظورين: استخدام العميل وتقطير البيانات.

استخدام العميل:

  • ما الذي يستخدمه العملاء في الوقت الحالي؟ التغيير يمكن أن يكون صعبا.
  • كم وظيفة تحتاج حقا؟ OpenLayers قد قليلا جدا ، ولكن إذا كنت لا تستخدمه ...

خدمة البيانات:

  • هل تقدم بيانات KML ؟ إذا كان الأمر كذلك ، فسوف يعمل كل من OpenLayers وخرائط Google معه ، وربما يتعين عليك اتخاذ قرار استنادًا إلى استخدام العميل.

  • هل تخدم أنواعًا أخرى من خدمات البيانات؟ (WMS ، WFS ، CSV ، إلخ.) إذا كان الأمر كذلك ، فمن المحتمل جدًا أن يكون لدى OpenLayers أمثلة ودعم لذلك.




قد يرفض بعض العملاء أو لديهم تحفظات قوية حول استخدام خرائط Google. قد تكون لديهم مخاوف صحيحة من أن Google قد تعرض إعلانات أو تغير واجهة برمجة التطبيقات دون إشعار. ومع ذلك ، فإن خرائط Google تستفيد من التكامل مع خدمات Google الأخرى (العلامات الموضعية وإضافة الصور وخدمات الترميز الجغرافي). نظرًا لأن الويب يتيح لك دائمًا الجمع بين العديد من خدمات الخرائط وواجهات برمجة التطبيقات المختلفة.




يعتمد الأمر فعلاً على ما تريد استخدام الخريطة له. لتخطيط النقاط على الخريطة ، ستكون خرائط Google على ما يرام. كما أن طبقات الخريطة لخرائط Google مفصلة تمامًا أيضًا. من ناحية أخرى ، تقدم OpenLayers وظائف أكثر بكثير وهي قابلة للتوسعة جدًا.

لدى OpenLayers الكثير من الأمثلة لتبدأ.

أما بالنسبة إلى الخرائط ، فإن OpenLayers هو مجرد واجهة برمجة التطبيقات (API) لذا تحتاج إلى تزويدها بتخطيط الطبقات. ستقتصر واجهة برمجة التطبيقات لخرائط Google على طبقات الخريطة التي توفرها google. مع OpenLayer يمكنك عرض أي خدمة خرائط متاحة بشكل عام (WMS ، WFS ، TMS ، WMS-C). مثال جيد جدا هو openstreetmap.org - (خريطة الشوارع العالمية التي تم جمعها من قبل المجتمع). يمكن إضافة OSM إلى الطبقة المفتوحة كطبقة TMS. تحقق من هذا example للحصول على التعليمات.