OpenLayers против Google Maps?

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

  • Why would I use OpenLayers instead of Google Maps?
    • Except for its OSS licence, anyway
    • Сталкивались ли вы с какой-либо ситуацией, в которой вы бы рекомендовали категорически не использовать OpenLayers?
    • Я выполнил поиск "OpenLayers" в Stack Overflow; ответов не много. Означает ли это, что это решение мало используется? Может ли это стать проблемой для долгосрочной жизнеспособности проекта?
  • For those of you who have already used OpenLayers: are there any common pitfalls / problems I may encounter?
    • What about using a JavaScript Framework with it? I've seen it's using Prototype, and I know Prototype, so that would be OK. But what about using something else like MooTools? (Which is not compatible with Prototype, BTW)
    • Есть ли какие-либо проблемы, связанные со скоростью и производительностью? Мне нужно, чтобы мое приложение было отзывчивым, и я не могу ждать часами, чтобы отобразить карту.
  • Are there maps available for many places, or are there lots of those missing?
    • That is, I'm in France, and need my application to work at least for big cities... Will that be OK?
    • если нет, то легко ли найти слои и визуализации для OpenLayers и интегрировать их?
  • Is there any kind of API to display roads?
    • For instance, to show roads that are one-way only.
    • Если да, то как я могу это сделать? Должен ли я иметь какой-то файл, содержащий информацию об этих дорогах, а затем отображать их на карте самостоятельно?
  • Вы знаете какой-нибудь хороший учебник по OpenLayers?

Я еще не пробовал, это просто неожиданные вопросы...


person Pascal MARTIN    schedule 06.08.2009    source источник
comment
Из любопытства, почему лицензия OSS должна быть точкой в ​​пользу OpenLayers, кроме как по философским причинам? Предполагая, что лицензия Google позволяет вам делать то, что вы хотите, бесплатно, почему это может повлиять на ваше решение в любом случае?   -  person Mark    schedule 25.08.2010
comment
@Mark Есть проблемы с лицензией Google. IANAL, но я понимаю, что отображение данных на Картах Google дает Google неограниченную лицензию на копирование, изменение, преобразование и распространение ваших данных. Например. запрещено показывать какие-либо данные получено из ГИС-продуктов UK Ordnance Survey на Google Maps. Еще одним преимуществом OSS является то, что OpenLayers не зависит от прихотей одной организации. Хотя на практике вы, вероятно, можете доверять здравому смыслу Google (и деньгам, и деловым соображениям) для поддержки Google Maps в будущем.   -  person MarkJ    schedule 26.08.2010
comment
Эти статьи могут быть вам полезны: EveryBlock — О наших картах: blog.everyblock.com /2008/feb/18/maps A List Apart — управляйте своими картами (также из EveryBlock) alistapart.com/articles/takecontrolofyourmaps   -  person mg1075    schedule 14.06.2011
comment
Карты Google не являются полностью бесплатными (google.com/support /форум/p/карты/). Лицензия зависит от того, как вы ее используете.   -  person Mo.    schedule 22.09.2011
comment
Стоит посетить сайт GIS.SE, чтобы узнать обо всем, что связано с географией, если вы не можете найти ответ на SO.   -  person Roy    schedule 16.05.2012


Ответы (11)


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

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

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

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

Существуют ли какие-либо распространенные ошибки/проблемы, с которыми я могу столкнуться?

Совместимость с JavaScript Framework

  • Я использую инфраструктуру jQuery для всей своей работы, и единственная проблема, с которой я столкнулся, — это ссылка на jQuery после OpenLayers. Кроме этого, это было гладкое плавание.
  • Производительность отличная! Единственные проблемы будут с вашим картографическим сервером или добавлением слишком большого количества векторов на карту.

Есть ли карты для многих мест?

  • Как я уже сказал, вы можете использовать базовые карты практически из любого источника в любой точке мира.

Есть ли какой-либо API для отображения дорог?

Знаете ли вы какой-нибудь хороший учебник по OpenLayers?

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

person atogle    schedule 13.08.2009
comment
Привет! Большое спасибо за этот ответ, это действительно полезно! Есть определенно некоторые интересные моменты (лучшая поддержка векторов, вероятно, будет полезна для проекта, о котором я думаю; и это не единственное, что вы говорите, что интересно!); Возможно, когда-нибудь я задам еще какие-нибудь вопросы: я еще не начал работать с OL (этот вопрос был довольно предварительным ^^ ), но, думаю, время придет, учитывая ответы, которые я получил! - person Pascal MARTIN; 15.08.2009
comment
+1. Я пытался не печатать этот комментарий, но я не могу удержаться. WGS84 — это не проекция. (Стоит попытаться изучить этот материал — я мучительно изучаю ГИС, и это действительно помогает с картами.) - person MarkJ; 27.01.2010
comment
WGS84 — это географическая система координат (используется для отображения точек широты и долготы на эллипсоиде). Веб-меркатор фактически является веб-проекцией. - person Roy; 16.05.2012

Это не обязательно вопрос 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, к которой у вас есть доступ.
person Nils Weinander    schedule 06.08.2009
comment
Хорошие ответы; спасибо за всю эту информацию! Я пока не знаю подробностей, но, возможно, мне придется использовать некоторые данные с моего собственного сервера, так что все должно быть в порядке, особенно с возможностью интеграции нескольких бэкэндов (если я правильно понял ^^ у меня будет возможность протестировать что через пару дней, надеюсь ;-)) - person Pascal MARTIN; 07.08.2009
comment
@Pascal, я рад, что ответ был полезен. Я могу добавить, что сообщество OpenLayers очень активно, а списки рассылки весьма полезны. - person Nils Weinander; 07.08.2009
comment
Если есть что-то, что вы хотите сделать, но не описано на странице примеров разработки, вы, скорее всего, не сможете сделать это на картах Google. например, даже межсайтовые сценарии не обязательно должны быть защищены прокси-сервером: openlayers .org/dev/examples/cross-origin.html - person Glenn Plas; 05.10.2012

Я не видел большого присутствия пользователей OpenLayers на SO, но они там есть. списки рассылки OpenLayers довольно активны (я на Пользователи и Разработчик и просматривайте от 50 до 100 электронных писем в день, в которых обсуждаются разные вещи. Вы также можете искать списки по этим ссылкам.).

Я не могу ответить на все ваши вопросы, но кое-что, что я скажу, это то, что OpenLayers и карты Google не исключают друг друга. OpenLayers — это библиотека javascript, и вы можете использовать ее для взаимодействия с картами Google. Посмотрите на этот пример: OpenLayers с использованием карт Google. А вот и главная страница с примерами OpenLayers.

person Derek Swingley    schedule 06.08.2009
comment
Спасибо за этот ответ! Приятно видеть, что списки рассылки довольно активны, прежде чем начать работу над проектом ^^ - person Pascal MARTIN; 07.08.2009

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

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

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

person Andrew Dwyer    schedule 06.08.2009
comment
Привет! Похоже, я твой первый ответ здесь! Добро пожаловать! И спасибо за ответ :-) - person Pascal MARTIN; 07.08.2009

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

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

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

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

См. эти часто задаваемые вопросы и Условия использования, чтобы получить более подробную информацию.

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

person nrabinowitz    schedule 08.02.2011
comment
Вы не можете на законных основаниях использовать карту Google в разделе своего сайта, доступ к которому требует оплаты, или для частного сайта, на который общественность не может зарегистрироваться (например, корпоративная интрасеть). Это неправильно. Вы можете использовать Карты Google в платном разделе своего сайта, если большинство пользователей могут пользоваться вашим сайтом и картами бесплатно. Например. Сайт недвижимости. Плакаты должны платить за размещение своих домов, но подавляющее большинство пользователей могут просматривать сайт бесплатно. В этом случае оба имеют доступ к Google Maps. - person Craig; 11.03.2011
comment
Спасибо. Я имел в виду, что вы не можете использовать API исключительно в разделах, требующих оплаты. Я обновил свой пост и добавил больше ссылок для решения этой проблемы. - person nrabinowitz; 15.03.2011
comment
OpenLayers использует Google Maps API для внутреннего использования, поэтому на вас распространяется та же лицензия. osgeo-org.1560.x6.nabble.com/ - person Alfredo Osorio; 21.03.2014
comment
@AlfredoOsorio - да, если вы используете слои Google. Есть много других источников плитки. - person nrabinowitz; 26.03.2014

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

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

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

person angelcervera    schedule 28.08.2010

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

person geographika    schedule 26.09.2009
comment
+1. У меня есть такие клиенты. И я не говорю, что они неправы. В прошлый раз, когда я смотрел, условия лицензирования Google Maps действительно позволяют Google размещать рекламу на картах, когда они того пожелают. - person MarkJ; 27.01.2010
comment
Кроме того, используя GoogleMaps, вы предоставляете Google бессрочную, безотзывную, безвозмездную, всемирную лицензию на воспроизведение, адаптацию и изменение вашего контента. - person MarkJ; 29.01.2010

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

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

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

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

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

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

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

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

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

person Hoffmann    schedule 31.01.2014

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

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

person Jānis Elmeris    schedule 01.08.2011

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

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

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

Обработка данных:

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

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

person Ruz    schedule 05.02.2010

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

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

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

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

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

хорошего дня

person demonz demonz    schedule 05.04.2013
comment
Привет, не могли бы вы рассказать о более сложных бесплатных геоинструментах, которые работают поверх OpenLayers? GeoExt упоминался выше, но других указанных я пока не видел. Спасибо. - person Brian B; 08.06.2013
comment
@BrianB привет, Брайан, именно я думал о geoext, когда писал более сложные бесплатные геоинструменты. Эта библиотека объединяет EXTJS с openlayers. - person demonz demonz; 17.06.2013