OpenLayers против Google Maps? [закрыто]


169

Я пару раз пользовался Google Maps, но что удивительного в OpenLayers .
Прежде чем приступить к программированию, вот пара вопросов, которые приходят мне в голову,

  • Зачем мне использовать OpenLayers вместо Google Maps?
    • Во всяком случае, за исключением его лицензии OSS
    • Сталкивались ли вы с ситуацией, в которой вы бы абсолютно рекомендовали не использовать OpenLayers?
    • Я выполнил поиск "OpenLayers" в Stack Overflow ; Есть не так много ответов. Значит ли это, что это решение мало используется? Может ли это быть проблемой для долгосрочной жизнеспособности проекта?
  • Для тех из вас, кто уже использовал OpenLayers: есть ли какие-либо распространенные ошибки / проблемы, с которыми я могу столкнуться?
    • Как насчет использования JavaScript Framework с ним? Я видел, что он использует Prototype , и я знаю Prototype, так что все будет в порядке. Но как насчет использования чего-то еще, такого как MooTools ? (Что не совместимо с Prototype, кстати)
    • Есть ли какие-либо проблемы со скоростью и производительностью? Мне нужно, чтобы мое приложение было отзывчивым, и я не могу ждать часами, чтобы отобразить карту.
  • Есть ли карты, доступные для многих мест, или их много?
    • То есть я во Франции, и мне нужно, чтобы мое приложение работало хотя бы для больших городов ... Это будет нормально?
    • если нет, то легко ли найти слои и визуализации для OpenLayers и интегрировать их?
  • Есть ли какой-нибудь API для отображения дорог?
    • Например, чтобы показать дороги, которые являются односторонними.
    • Если да, как я могу это сделать? Должен ли я иметь какой-нибудь файл, содержащий информацию о этих дорогах, и затем отображать их на карте самостоятельно?
  • Знаете ли вы хороший учебник для OpenLayers?

Я еще не пробовал, это просто из синих вопросов ...


Из любопытства, почему «лицензия OSS» была бы точкой в ​​пользу OpenLayers, за исключением философских соображений? Если лицензия Google позволяет вам делать то, что вы хотите бесплатно, почему это так или иначе повлияет на ваше решение?
Mark

7
@Mark. Проблемы с лицензией Google. IANAL, но я понимаю, что отображение данных в Картах Google дает Google неограниченную лицензию на копирование, изменение, преобразование и распространение ваших данных. Например, незаконно показывать любые данные, полученные из ГИС-продуктов UK Ordnance Survey, на Картах Google. Еще одним преимуществом OSS является то, что OpenLayers не подчиняется прихотям одной организации. Хотя практически вы, вероятно, можете доверять
здравому

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 по всем вопросам географии, если вы не можете найти ответ на SO.
Рой

Ответы:


158

Это действительно отличные вопросы! Я профессиональный разработчик и фанат OpenLayers, поэтому я отвечу на ваши вопросы с этой точки зрения.

Зачем мне использовать OpenLayers вместо Google Maps?

  • Гибкость: вы не привязаны к какому-либо конкретному поставщику карт или технологии. Вы можете изменить в любое время и не нужно переписывать весь ваш код. 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?

  • Я не знаю учебников, но в OpenLayers есть множество примеров.

Я надеюсь, что это полезно. И у меня есть Stack Overflow, если у вас есть вопросы!


5
Здравствуй! Большое спасибо за этот ответ, это действительно полезно! Несомненно, есть некоторые интересные моменты (возможно, лучшая поддержка векторов будет полезна для проекта, о котором я думаю; и это не единственное, что вы говорите, это интересно!); Возможно, я когда-нибудь задам еще несколько вопросов: я еще не начал работать с OL (этот вопрос был довольно «прелимарным» ^^), но, думаю, время придет, учитывая полученные ответы!
Паскаль МАРТИН

5
+1. Я пытался не вводить этот комментарий, но я не могу с собой поделать. WGS84 не является проекцией. (Стоит попытаться изучить этот материал - я мучительно собираю немного ГИС, и это действительно помогает с картами.)
MarkJ

1
WGS84 - это географическая система координат (используется для отображения широтных / длинных точек на эллипсоиде). Web mercator - это в значительной степени де-факто веб-проекция.
Рой

35

Это не обязательно вопрос OpenLayers ИЛИ Google Maps. В конце концов, вы можете использовать Google Maps для фона вашей карты в OpenLayers. Некоторые более конкретные ответы:

Почему OpenLayers?

  • OpenLayers может объединять карты из разных источников (фон Google Maps, наложения WMS, векторные данные из файлов KML или GML или WFS и т. Д.)
  • Вы можете стилизовать OpenLayers гораздо больше, чем Google Maps
  • Открытый исходный код, вы можете проверить исходный код при отладке
  • Если вам нужна высокая точность в картах, используйте 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 Maps не являются взаимоисключающими. OpenLayers - это библиотека javascript, и вы можете использовать ее для взаимодействия с картами Google. Посмотрите на этот пример: OpenLayers с помощью карт Google . И вот главная страница примеров OpenLayers .


Спасибо за этот ответ! Приятно видеть, что списки рассылки довольно активны перед началом работы с проектом ^^
Паскаль МАРТИН

13

Один момент, который не был полностью сделан здесь, состоит в том, что использование OpenLayers позволяет избежать различных ограничений, накладываемых Google на условия обслуживания для своих картографических API, в том числе:

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

  • Вы не можете легально (или практически) использовать Google API для автономных приложений (т. Е. Когда плитки обслуживаются с вашего компьютера). Даже если бы не было юридических ограничений, Google делает это технически очень сложным, в то время как OpenLayers облегчает это.

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

См. Этот FAQ и Условия предоставления услуг для более подробной информации.

Все это говорит о том, что как давний разработчик Карт Google, который недавно начал использовать OpenLayers, я чувствую, что у Карт Google есть лучшая документация, более широкое сообщество пользователей и более четкий и стабильный API, чем у OpenLayers. Таким образом, вы должны сделать компромисс где-то.


«Вы не можете на законных основаниях использовать карту Google в разделе своего сайта, для которого требуется оплата, или для частного сайта, на который публика не может подписаться (например, корпоративная интрасеть)». Это неверно. Вы можете использовать Карты Google в платном разделе вашего сайта, если большинство пользователей используют ваш сайт и карты без оплаты. Например, сайт по недвижимости. Плакаты должны платить, чтобы перечислить свои дома, но подавляющее большинство пользователей получают возможность просматривать сайт без оплаты. В этом случае оба имеют доступ к Google Maps.
Крейг

Спасибо. Я имел в виду, что вы не можете использовать API исключительно в разделах, требующих оплаты. Я обновил свой пост и добавил дополнительные ссылки для решения этой проблемы.
Нрабиновиц

OpenLayers использует Google Maps API для внутреннего использования, поэтому вы пользуетесь той же лицензией. osgeo-org.1560.x6.nabble.com/…
Альфредо Осорио

@AlfredoOsorio - да, если вы используете слои Google. Есть много других источников плитки.
Нрабиновиц

12

Это действительно зависит от того, для чего вы хотите использовать карту. Чтобы просто нанести точки на карту, Google Maps будет в порядке. Слои карты для Google Maps также довольно подробны. OpenLayers, с другой стороны, предлагает гораздо больше функциональности и является очень расширяемым.

У OpenLayers есть много примеров, с которых можно начать.

Что касается карт, OpenLayers - это всего лишь API, поэтому вам нужно предоставить его для отображения слоев. API Карт Google будет ограничен слоями карт, предоставленными Google. С OpenLayer вы можете отобразить практически любой общедоступный картографический сервис (WMS, WFS, TMS, WMS-C). Очень хороший пример - openstreetmap.org - (глобальная карта улиц, собранная сообществом). OSM может быть добавлен к открытым слоям как слой TMS. Проверьте этот пример для получения инструкций.


Здравствуй! Похоже, "Я есть" ваш первый ответ здесь! Добро пожаловать! И спасибо за ваш ответ :-)
Паскаль МАРТИН

9

Некоторые клиенты могут отказаться или иметь серьезные оговорки в отношении использования Карт Google. Они могут иметь обоснованные опасения, что Google может представить рекламу или изменить API без предварительного уведомления. Однако Google Maps имеет преимущество интеграции с другими службами Google (метками, добавлением фотографий, услугами геокодирования). В Интернете вы всегда можете комбинировать множество различных картографических сервисов и API.


1
+1. У меня есть такие клиенты. И я не говорю, что они не правы. В прошлый раз, когда я смотрел, условия лицензирования Карт Google действительно позволяли Google размещать рекламу на картах в любое время.
MarkJ

2
Кроме того, используя GoogleMaps, вы даете Google бессрочную, безотзывную, бесплатную всемирную лицензию на воспроизведение, адаптацию и модификацию вашего контента.
MarkJ

9

Я согласен со всеми ответами, но есть один очень важный момент, который никто не упоминает. OpenLayers и Google Maps имеют разные цели.

OpenLayer - это отличная платформа для отображения геоданных, но Google Maps - это пул служб, которые включают в себя среду для отображения геоданных среди других служб.

Таким образом, Google Maps предоставляет множество сервисов и функций, которых нет у OpenLayes. Некоторыми примерами функций и сервисов Карт Google являются локализация региона, обнаружение датчиков (для устройства с GPS) и локализация пользователей, геокодирование и обратное геокодирование, просмотр улиц и т. Д.


6

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

Я сделал общий API для абстрагирования различий между ними, и позвольте мне сказать вам, что некоторые вещи легче сделать в одном, чем в другом. Подобно ограничению границ, в которых вы можете панорамировать карту, это намного проще сделать в OpenLayers, но тепловые карты проще использовать в GoogleMaps (они официально поддерживаются Google, в отличие от доступных плагинов OpenLayers).

  1. OpenLayers поддерживают автономные карты. Некоторые из моих пользователей находятся в частных интрасетях без подключения к интернету.

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

  3. GoogleMaps InfoWindows проще в использовании и удобнее, чем OpenLayers.Popups. Это маленькие окна, которые могут открываться при нажатии на маркер. GoogleMap InfoWindows также намного более симпатичны по умолчанию, вам нужно немного поработать над CSS с помощью всплывающих окон.

  4. У GoogleMaps есть просмотр улиц, который иногда полезен.

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

Обычно в конце концов вы должны использовать OpenLayers из-за уменьшенной головной боли, которую вы можете получить от лицензирования и использования полосы пропускания от googlemaps. Оба хорошо справляются с базовым отображением (то есть отображают маркеры поверх карты). Если вы не можете найти нужную вам особенность из одной, которая отсутствует у другой, вы должны использовать OpenLayers. См. Это для получения дополнительной информации о биллинге googlemaps и о том, когда вы можете использовать его бесплатно.

Кроме того, GoogleMaps имеет свой базовый тип геолокации как «LatLng», а Openlayers используют «LonLat», что сводит меня с ума, потому что я все время ошибаюсь в порядке параметров в вызовах функций.


3

В дополнение к тем, кто упомянул проблемы со скоростью, я хотел бы добавить, что средство визуализации VML в IE может работать очень медленно с векторным слоем со множеством функций. Один пользователь упомянул около 200. Это именно то, что я могу добавить, прежде чем IE значительно замедлится до точки зависания. Если вы добавляете функции, которые являются текстовыми метками, вы можете добавить половину меньше, вероятно, потому что внутренне каждая текстовая метка состоит из двух элементов VML.

В Google вы можете создать собственный GOverlay, чей контент является "div", который без проблем отображается в IE.


3

Я хотел бы добавить пару вещей с двух точек зрения: использование клиента и получение данных.

Использование клиента:

  • Что вы, клиенты, привыкли использовать в настоящее время? Изменить может быть сложно.
  • Сколько функциональности вам действительно нужно? OpenLayers имеет немного, но если вы не используете его ...

Обслуживание данных:

  • Вы обслуживаете данные KML ? Если это так, то и OpenLayers, и Google Maps будут работать с ним, и вам, вероятно, придется принять решение в зависимости от использования клиента.

  • Вы обслуживаете другие виды услуг передачи данных? (WMS, WFS, CSV и т. Д.) Если это так, то, скорее всего, у OpenLayers есть примеры и поддержка для этого.


2

OL имеет большую базу поклонников и, возможно, является наиболее широко используемым в мире продуктом с открытым исходным кодом.

В этом киберпространстве вы не видите столько потоков и сообщений об этом, потому что люди здесь склонны обсуждать другие виды технологий, такие как JSF и Mobile (не гео), а не потому, что OL похож на распорки.

Однако у Ol есть некоторые недостатки, в основном из-за того, что он настолько низок, что вам приходится писать много кода для выполнения обычных операций. Это тоже может работать хорошо, потому что как разработчик a: у вас есть весь код заранее, а b: настройка и настройка очень просты.

Существуют более сложные бесплатные геоинструменты, но все, что они делают, это называют openlayers и абстрагируют некоторые из более скучных хлопот.

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

хорошего дня


Привет, не могли бы вы рассказать о «более совершенных бесплатных геоинструментах», которые находятся на вершине OpenLayers? GeoExt был упомянут выше, но я еще не видел никаких других указанных. Спасибо.
Брайан Б

@BrianB Привет, Брайан, я думал о гео-тексте, когда писал «более сложные бесплатные геоинструменты». Эта библиотека объединяет EXTJS с открытыми слоями.
Демонз Демонз
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.