OpenLayers vs Google Maps? [зачинено]


169

Я кілька разів користувався Google Maps, але що цікаво про OpenLayers .
Перш ніж розпочати будь-який вид кодування, ось кілька питань, які мені спадають на думку,

  • Чому я використовую OpenLayers замість Карт Google?
    • За винятком ліцензії на OSS, все одно
    • Чи стикалися ви з якоюсь ситуацією, в якій рекомендували б абсолютно не використовувати OpenLayers?
    • Я здійснив пошук про "OpenLayers" на стеку Overflow ; відповідей не так багато. Чи означає, що це рішення використовується не так багато? Чи може це бути проблемою для довгострокової життєздатності проекту?
  • Для тих із вас, хто вже використовував OpenLayers: чи є якісь загальні підводні камені / проблеми, з якими я можу зіткнутися?
    • А як щодо використання JavaScript Framework з ним? Я бачив, що він використовує Prototype , і я знаю Prototype, так що це було б добре. Але як бути з використанням чогось іншого на зразок MooTools ? (Що не сумісне з Prototype, BTW)
    • Чи є якісь проблеми зі швидкістю та продуктивністю? Мені потрібно, щоб моя програма була чуйною і не могла чекати годин, щоб відобразити карту.
  • Чи доступні карти для багатьох місць чи багато таких відсутні?
    • Тобто я перебуваю у Франції, і мені потрібна моя заявка, щоб працювати принаймні для великих міст ... Це буде гаразд?
    • якщо ні, чи легко знайти шари та візуалізацію для OpenLayers та інтегрувати їх?
  • Чи є якийсь API для відображення доріг?
    • Наприклад, показати дороги, які є єдиними.
    • Якщо так, то як я можу це зробити? Чи повинен я мати якийсь файл, що містить ці відомості про дороги, а потім сам відображати їх на карті?
  • Чи знаєте ви якийсь хороший підручник для OpenLayers?

Я ще не пробував цього, це просто нечіткі запитання ...


З цікавості, чому "ліцензія на OSS" може бути точкою на користь OpenLayers, за винятком філософських причин? Якщо припустити, що ліцензія Google дозволяє вам робити те, що ви хочете безкоштовно, чому це впливає на ваше рішення в будь-якому випадку?
Марк

7
@Mark Проблеми з ліцензією Google. IANAL, але я розумію, що показ даних на Картах Google надає Google необмежену ліцензію на копіювання, зміну, перетворення та перерозподіл ваших даних. Наприклад , забороняється показувати на Картах Google будь-які дані, отримані з GIS продуктів Великобританії з питань орденізації. Ще одна перевага OSS полягає в тому, що OpenLayers не підлягає примхам однієї організації. Хоча практично ви можете, напевно, довіряти здоровому глузду Google (і грошей, і бізнес-причин) для підтримки Карт Google у майбутньому
MarkJ

1
Ці статті можуть принести користь: EveryBlock - Про наші карти: blog.everyblock.com/2008/feb/18/maps Розділ у списку - Візьміть під свій контроль карти (також від EveryBlock) alistapart.com/articles/takecontrolofyourmaps
mg1075

8
Карти Google не є абсолютно безкоштовними ( google.com/support/forum/p/maps/… ). Ліцензія залежить від того, як ви її використовуєте.
Мо

Варто перевірити сайт GIS.SE на всю історію географії, якщо ви не можете знайти відповідь на ТАК.
Рой

Відповіді:


158

Це справді чудові питання! Я професійний розробник і любитель OpenLayers, тому я вирішу ваші питання з цього погляду.

Чому я використовую OpenLayers замість Карт Google?

  • Гнучкість: ви не прив'язані до будь-якого конкретного постачальника карт чи технологій. Ви можете будь-коли змінити і не потрібно переписувати весь код. Google, Yahoo, Microsoft, WMS, ArcGIS Server, MapServer тощо підтримуються нестандартно.
  • Векторна підтримка: краща підтримка точок, поліліній та багатокутників.
  • Контроль: у вас є можливість додавати будь-які нові функції, які можуть вам знадобитися. Я особисто написав три плагіни для OpenLayers, два з яких є або будуть частиною джерела.
  • Налагодження: набагато простіше налагоджувати, коли ви можете перейти через вихідний код!

Я б зовсім не хвилювався з приводу довгострокової життєздатності проекту. Це головна бібліотека картографічних карт з відкритим кодом.

Чи є якісь загальні підводні камені / проблеми, з якими я можу зіткнутися?

  • Найбільша проблема, з якою я стикався, - це робота з проекцією Web Mercator (Google). Відображення векторних даних, що знаходяться у загальній та реальній проекції, як WGS 84, може бути болючим для відображення на карті OpenLayers за допомогою базових карт Google, Yahoo та Microsoft. Приклади - твій друг.

Сумісність з JavaScript Framework

  • Я використовую рамку jQuery для всієї своєї роботи, і єдина проблема, з якою у мене виникло, - це посилання на jQuery після OpenLayers. Крім цього, це плавне плавання.
  • Продуктивність чудова! Єдині проблеми стосуватимуться вашого сервера карт або додавання занадто багато векторів до вашої карти.

Чи доступні карти для багатьох місць?

  • Як я вже говорив, ви можете використовувати базові карти з будь-якого джерела для будь-якої точки світу.

Чи є якийсь API для відображення доріг?

  • Я б перевірив CloudMade! Вони перетворили проект OpenStreetMap в сервіс плитки карт і дозволяють користуватися стилем. Я вважаю, що ви можете стилізувати вулиці в один бік (за вашим прикладом) певним чином. Область для розробників CloudMade .

Чи знаєте ви якийсь хороший підручник для OpenLayers?

Сподіваюся, це корисно. І я навколо Stack Overflow, якщо у вас є якісь питання!


5
Привіт! Дуже дякую за цю відповідь, що справді корисно! Однозначно є кілька цікавих моментів (краща підтримка вектора, ймовірно, буде корисна для проекту, про який я думаю; і це не єдине, що ви говорите, що цікаво!); Можливо, я колись задам якісь запитання: я ще не почав працювати з OL (це питання було досить «попереднім» ^ ^), але прийде час, я вважаю, враховуючи відповіді, які я отримав!
Паскаль МАРТИН

5
+1. Я намагався не вводити цей коментар, але не можу допомогти собі. WGS84 не є проекцією. (Варто спробувати вивчити цей матеріал - я болісно підбираю трохи ГІС, і це дуже допомагає з картою матеріалів.)
MarkJ

1
WGS84 - це географічна система координат (використовується для відображення широких / довгих точок на еліпсоїді). Веб-меркатор є значною мірою дефакто-веб-проекцією.
Рой

35

Це не обов’язково питання щодо OpenLayers АБО Google Maps. Зрештою, ви можете використовувати Карти Google для фону вашої карти у OpenLayers. Ще кілька конкретних відповідей:

Чому OpenLayers?

  • OpenLayers можуть комбінувати карти з різних джерел (фон Google Maps, накладки WMS, векторні дані з KML або GML-файлів або WFS тощо)
  • Ви можете стилізувати OpenLayers набагато більше, ніж ви можете на Картах Google
  • З відкритим кодом, ви можете перевірити вихідний код під час налагодження
  • Якщо вам потрібна висока точність в картах, використовуйте OpenLayers з відповідним сервісом карток, а не Google Maps, щоб отримати кращу проекцію карти (Google Maps передбачає, що Земля є ідеальною сферою)

Підводні камені

  • Якщо ви хочете використовувати векторні (WFS) дані з іншого сервера, вам потрібен проксі-сервер через обмеження сценаріїв міжміських сайтів

Продуктивність

  • В основному це залежить від швидкості резервного копіювання карти
  • Відображення багатьох функцій вектора (ліміт залежить від браузера, але скажімо,> 200 на один перегляд) вимагає часу, але це швидше проблема браузера, ніж проблема з OpenLayers

Рамки JavaScript

  • Погляньте, наприклад, на GeoExt , що є ExtJS + OpenLayers

Доступні карти

  • OpenLayers не постачається з резервним картою. Ви можете користуватися Google Maps, Yahoo Maps, MS Virtual Earth тощо, або будь-якими послугами WMS та WFS, які мають доступ до

Приємні відповіді; дякую за всю цю інформацію! Я ще не знаю деталей, але, можливо, доведеться використовувати деякі дані з власного сервера, тому все повинно бути в порядку, особливо з можливістю інтегрувати декілька програм (якщо я правильно зрозумів ^^ у мене будуть шанси перевірити що за пару днів, сподіваюся ;-))
Паскаль МАРТИН

1
@Pascal, я радий, що відповідь була корисною. Можу додати, що спільнота OpenLayers дуже активна і списки розсилки досить корисні.
Нілс Вайндер

Якщо ви хочете щось зробити, це не висвітлено на сторінці прикладів розробників, ви, ймовірно, не можете це зробити на картах google. наприклад, навіть міжсайтовий сценарій не повинен охоплюватися проксі: openlayers.org/dev/examples/cross-origin.html
Glenn Plas

23

Я не бачив присутніх користувачів OpenLayers на SO, але вони там. У OpenLayers списки адресатів досить активний (я на користувачів і Дів і бачити в будь-якому з 50-100 листів в день обговорює різні речі. Ви можете знайти списки з цих посилань теж.).

Я не можу відповісти на всі ваші запитання, але одне, що я зазначу, це те, що OpenLayers і google карти не є взаємовиключними. OpenLayers - це бібліотека javascript, і ви можете використовувати її для взаємодії з картами Google. Ознайомтеся з цим прикладом: OpenLayers за допомогою карт Google . І ось основна сторінка прикладів OpenLayers .


Дякую за цю відповідь! Приємно бачити, що списки розсилки досить активні, перш ніж почати працювати з проектом ^^
Pascal MARTIN

13

Один момент, який тут не зроблений повністю, - це те, що використання OpenLayers дозволяє уникнути різноманітних обмежень, які Google розміщує на умовах надання послуг для своїх API-карт, включаючи:

  • Ви не можете на законних підставах використовувати карту Google виключно в розділі свого веб-сайту, який вимагає оплати для доступу, або на приватному веб-сайті, до якого громадськість не може зареєструватися (наприклад, корпоративна інтранета). (IANAL, але див. Загальні положення та умови 9.1 та поширені запитання )

  • Ви не можете юридично (або практично) використовувати Google API для офлайн-програм (тобто там, де плитки подаються з вашої власної машини). Навіть якщо юридичних обмежень не було, Google робить це технічно дуже важким, а OpenLayers - це легко.

  • Google залишає за собою право вимкнути доступ до API, якщо ви показуєте карту із вмістом, який вважає заперечним. Приклад, наведений у FAQ, - це карта нелегальних наркотиків, яка дає гарне відчуття сірих ділянок, яке може обмежувати це обмеження.

Дивіться це поширене запитання та умови надання послуг для отримання більш детальної інформації.

З урахуванням цього, як давній розробник Google Maps, який нещодавно почав використовувати OpenLayers, я відчуваю, що Google Maps має кращу документацію, більшу спільноту користувачів та більш чіткий та стабільний API, ніж OpenLayers. Тож вам доведеться десь зробити компроміс.


"Ви не можете легально використовувати карту Google у розділі свого сайту, який вимагає оплати для доступу, або на приватному веб-сайті, до якого громадськість не може зареєструватися (наприклад, корпоративна інтранета)." Це неправильно. Ви можете використовувати Карти Google у платній частині свого сайту до тих пір, поки більшість користувачів не користуються вашим сайтом та картами без оплати. Наприклад, веб-сайт з нерухомості. Плакати повинні платити за перелік своїх будинків, але переважна більшість користувачів отримує можливість переглядати сайт без оплати. У цьому випадку обидва мають доступ до Карт Google.
Крейг

Дякую - я мав на увазі, що ви не можете використовувати API виключно в розділах, необхідних для оплати. Я оновив свою публікацію та додав більше посилань, щоб вирішити цю проблему.
nrabinowitz

OpenLayers використовує API Google Maps внутрішньо, тому на вас поширюється однакова ліцензія. osgeo-org.1560.x6.nabble.com/…
Альфредо

@AlfredoOsorio - так, IFF ви використовуєте шари Google. Є багато інших джерел плитки.
nrabinowitz

12

Це дійсно залежить від того, для чого ви хочете використовувати карту. Щоб просто побудувати точки на карті, Google Maps буде добре. Шари карт для Карт Google також досить детальні. З іншого боку, OpenLayers пропонує набагато більше функціональних можливостей і дуже розширюється.

У OpenLayers є безліч прикладів для початку роботи.

Що стосується карт, OpenLayers - це лише API, тож вам потрібно поставити, вона буде відображати шари. API Карт Google буде обмежено шарами карт, наданими Google. За допомогою OpenLayer ви можете відображати майже будь-яку загальнодоступну карту (WMS, WFS, TMS, WMS-C). Дуже хороший приклад - openstreetmap.org - (глобальна карта вулиць, зібрана громадою). OSM може бути доданий до відкритих шарів як TMS-шар. Перегляньте цей приклад для отримання інструкцій.


Привіт! Виглядає як "я" ваша перша відповідь тут! Ласкаво просимо! І дякую за вашу відповідь :-)
Паскаль МАРТИН

9

Деякі клієнти можуть відмовитись або мати сильні застереження щодо використання Google Maps. У них можуть виникнути поваги, що Google може ввести рекламу чи змінити API без попереднього повідомлення. Однак Google Maps має перевагу інтеграції з іншими службами Google (мітки, додавання фотографій, послуги геокодування). Завдяки Інтернету ви завжди можете поєднувати безліч різних служб картографування та API.


1
+1. У мене є такі клієнти. І я не кажу, що вони помиляються. Востаннє я дивився, ліцензійні умови Google Maps дійсно дозволяють Google вводити рекламу на карти, коли вони захочуть.
MarkJ

2
Також за допомогою GoogleMaps ви надаєте Google постійну, безповоротну, безоплатну, всесвітню ліцензію на відтворення, адаптацію та зміну вашого вмісту.
MarkJ

9

Я погоджуюся з усіма відповідями, але є один дуже важливий момент, який ніхто не згадує. OpenLayers та Карти Google мають різні цілі.

OpenLayer - це відмінна основа для відображення геоданих, але Google Maps - це сервіс, що включає рамки для відображення геоданих серед інших служб.

Отже, Google Maps відкриває безліч сервісів та функцій, яких OpenLayes не має. Деякі приклади функцій та служб Карт Google - локалізація регіону, виявлення датчиків (для пристроїв з GPS) та локалізація користувача, геокодування та геокодування назад, перегляд вулиць тощо.


6

Я використовував обидва API. Я створюю програмне забезпечення для корпорацій, і це програмне забезпечення вимагає картографування, але не всі клієнти мають ліцензію GoogleMaps, тому мені потрібно підтримувати обидва типи карт.

Я створив загальний API для абстрагування відмінностей між ними, і дозвольте сказати, деякі речі простіше зробити в одному, ніж в іншому. Як і обмеження меж, на які можна панувати карту, це зробити набагато простіше в OpenLayers, але теплові карти легше використовувати у GoogleMaps (це офіційно підтримується google, на відміну від доступних плагінів OpenLayers).

  1. OpenLayers підтримують офлайн-карти. Деякі мої користувачі перебувають у приватних інтрамережах без підключення до Інтернету.

  2. У GoogleMaps є два абсолютно необхідні плагіни, MarkCluster та Spiderfier, що дозволяє візуалізувати величезну кількість маркерів.

  3. Інформаційні вікна GoogleMaps простіші у використанні та мають кращу зручність використання, ніж OpenLayers.Popups. Це маленькі вікна, які можна відкрити при натисканні на маркер. Інфо-вікна Googlemaps також набагато гарніші за замовчуванням, вам доведеться виконати деякі CSS-майстри з спливаючими вікнами.

  4. GoogleMaps має перегляд вулиць, який іноді корисний.

  5. GoogleMaps має більше функцій, які можуть вам знадобитися. Хоча багато функцій також є в OpenLayers, але офіційно не підтримуються.

Зазвичай, врешті-решт, ви повинні піти з OpenLayers через зменшення головного болю, яке ви можете отримати від ліцензування та використання пропускної здатності з googlemaps. Обидва дуже добре обробляють базове відображення (тобто відображення маркерів на вершині карти). Якщо ви не зможете знайти конкретну функцію, потрібну вам для однієї, якої немає на іншій, вам слід перейти на OpenLayers. Дивіться це для отримання додаткової інформації про виставлення рахунків Google і про те, коли ви можете користуватися нею безкоштовно.

Крім того, у GoogleMaps є основний тип геолокації як "LatLng", а Openlayers використовують "LonLat", що приводить мене до страшних гайок, тому що я постійно помиляюсь порядком параметрів у викликах функцій.


3

На додаток до тих, хто згадував про проблеми зі швидкістю, я хотів би додати, що VML-рендерір IE може бути дуже повільним із векторним шаром з багатьма функціями. Один користувач згадав про 200. Це приблизно те, що я можу додати, перш ніж IE значно сповільниться до морозу. Якщо ви додаєте функції, що є текстовими мітками, ви можете додати вдвічі менше, ймовірно, тому, що внутрішньо кожна текстова мітка складається з двох елементів VML.

У Google ви можете створити користувальницький GOverlay, вміст якого є "дівом", який виводиться без проблем в IE.


3

Я б доповнив кілька речей з двох позицій: використання клієнтів та отримання даних.

Використання клієнта:

  • З чим ви звикли користуватися клієнтами зараз? Зміни можуть бути важкими.
  • Скільки функціоналів вам справді потрібно? У OpenLayers є небагато, але якщо ви не використовуєте її ...

Подання даних:

  • Ви подаєте дані KML ? Якщо так, то з ним працюватимуть і OpenLayers, і Карти Google, і вам, ймовірно, доведеться приймати рішення на основі використання клієнта.

  • Ви надаєте послуги інших даних? (WMS, WFS, CSV тощо). Якщо так, то, можливо, OpenLayers має приклади та підтримку.


2

OL має велику вентиляторну базу і, мабуть, найпоширеніша геотехніка Opensource, що використовується у світі.

Ви не бачите, що багато тем і публікацій про це в цьому кібер-місці, тому що тут люди схильні обговорювати інші види технологій, такі як JSF та Mobile (non geo), а не тому, що OL - це як стійки.

Однак у Ol є деякі недоліки, головним чином, що це настільки низький рівень, що вам доведеться писати багато коду, щоб робити звичайні операційні можливості. Це може працювати і в хороший спосіб, тому що як розробник: у вас є весь код наперед та b: налаштування та налаштування дуже просто.

Є більш досконалі безкоштовні геотуалі, але все, що вони роблять, - це закликати до відкритих шарів і абстрагувати деякі більш нудні справи.

Тож використовуйте це впевнено. Він зрілий, надійний, і не загине у передбачуваному майбутньому. Однак якщо ви хочете прискорити процес розробки, слід спробувати інші інструменти, які монтуються поверх нього.

гарного дня


Привіт, ви могли б детальніше ознайомитись з "більш досконалими безкоштовними геотуалами", які сидять на вершині OpenLayers? Вище згадувалося про GeoExt, але я ще не бачив жодного іншого. Дякую.
Брайан Б

@ BrianB Привіт Брайан, саме я думав про geoext, коли писав "більш досконалі вільні геотуали". Ця бібліотека об'єднує EXTJS з відкритими шарами.
demonz demonz
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.