2009-08-06 4 views
156

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

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

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

+0

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

+7

@Mark Есть проблемы с лицензией Google. IANAL, но я понимаю, что отображение данных на Картах Google дает Google неограниченную лицензию на копирование, изменение, преобразование и перераспределение ваших данных. Например. [это незаконно] (http://blog.ordnancesurvey.co.uk/2010/08/what-the-psma-really-means/), чтобы показать любые данные, полученные из ГИС-продуктов UK Odnance Survey для Google Maps. Еще одно преимущество OSS заключается в том, что OpenLayers не подчиняется прихотям одной организации. Несмотря на то, что вы, вероятно, можете доверять здравому смыслу (и деньгам и бизнесу Google) для поддержки Google Maps в будущем – MarkJ

+8

Карты Google не являются полностью бесплатными (http://www.google.com/support/forum/p/maps/нить? TID = 42dbb1b2b5dbc6ad & гл = еп). Лицензия зависит от того, как вы ее используете. –

ответ

23

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

Я не могу ответить на все ваши вопросы, но я хочу сказать, что OpenLayers и карты Google не являются взаимоисключающими. OpenLayers - это javascript-библиотека, и вы можете использовать ее для взаимодействия с картами Google. Посмотрите этот пример: OpenLayers using google maps. И вот главный OpenLayers examples page.

+0

Спасибо за этот ответ! Приятно видеть, что списки mailling довольно активны, прежде чем начать работать с проектом ^^ –

34

Это не обязательно вопрос OpenLayers или Google Maps. Вы можете использовать Карты Google для своего фона карты в OpenLayers. Несколько более конкретных ответов:

Почему OpenLayers?

  • OpenLayers можно комбинировать карты из разных источников (Google Maps фона, накладываемых WMS, векторные данные из KML или GML файлы или WFS и т.д.)
  • Вы можете стиль OpenLayers гораздо больше thanyou может Google Maps
  • Open source, вы можете проверить исходный код при отладке
  • Если вам нужна высокая точность на картах, используйте OpenLayers с подходящим бэкэндом сервера карт, а не Google Maps, чтобы получить лучшую карту (Google Maps предполагает, что земля идеальна сфера)

Ловушка

  • Если вы хотите использовать данные вектора (WFS) с другого сервера вам нужен прокси-сервер, из-за ограничения сценариев Межсайтовых

Performance

  • Зависит в основном от скорости работы бэкэнда карты
  • Показано многие функции вектора (предел зависит браузер, но говорят,> 200 на одной точке зрения) занимает много времени, но это больше браузер вещь, чем проблема с OpenLayers

JavaScript каркасов

  • Посмотрите GeoExt, который ExtJS + OpenLayers, например

Доступные карты

  • OpenLayers не поставляется с картой памяти. Вы можете использовать Карты Google, Карты Yahoo, MS Virtual Earth и т. Д., Или любые службы WMS и WFS yuo имеют доступ к
+0

Хорошие ответы; спасибо за всю эту информацию! Я еще не знаю деталей, но мне, возможно, придется использовать некоторые данные с моего собственного сервера, поэтому все должно быть в порядке, особенно с возможностью интеграции нескольких бэкэндов (если я правильно понял^^ У меня будут шансы протестировать что через пару дней я надеюсь ;-)) –

+1

@ Паскаль, я рад, что ответ был полезен. Я могу добавить, что сообщество OpenLayers очень активно, и списки рассылки весьма полезны. –

+0

Если есть что-то, что вы хотите сделать, которое не рассматривается на странице примеров dev, вы, скорее всего, не сможете это сделать на картах Google. например, даже межсайтовый скриптинг не должен покрываться прокси: http://openlayers.org/dev/examples/cross-origin.html –

12

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

У OpenLayers есть много примеров, чтобы вы начали.

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

+0

Привет! Похоже, что «я» ваш первый ответ здесь!Добро пожаловать! И спасибо за ваш ответ :-) –

148

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

Почему я должен использовать OpenLayers вместо Google Maps?

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

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

Есть ли общие проблемы/проблемы, с которыми я могу столкнуться?

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

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

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

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

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

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

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

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

  • Я не знаю, какие-либо уроки, но есть тонна примеров в OpenLayers Examples

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

+5

Привет! Большое спасибо за этот ответ, это действительно полезно! Есть определенные интересные моменты (лучшая поддержка векторов, вероятно, будет полезна для проекта, о котором я думаю, и это не единственное, что вы говорите, это интересно!); Возможно, я когда-нибудь задам некоторые другие вопросы: я еще не начал работать с OL (этот вопрос был довольно «prelimar» один ^^), но придет время, я полагаю, учитывая ответы, которые я получил! –

+5

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

+1

WGS84 - это географическая система координат (используется для отображения лат/длинных точек на эллипсоиде). Веб-меркатор в значительной степени является веб-проекцией defacto. – Roy

9

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

+1

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

+2

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

3

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

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

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

сервировки данных:

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

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

8

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

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

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

12

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

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

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

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

См this FAQ и Terms of Service для более подробной информации.

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

+0

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

+0

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

+0

OpenLayers использует API Карт Google внутренне, поэтому вы подпадаете под действие той же лицензии. http://osgeo-org.1560.x6.nabble.com/Introduction-of-usage-limits-to-the-Google-Maps-API-td3912955.html –

3

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

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

2

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

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

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

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

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

хороший день

+0

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

+0

@BrianB hi brian, именно я думал о geoext, когда писал «более сложные бесплатные геотазы». Эта библиотека объединяет EXTJS с openlayers. –

6

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

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

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

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

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

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

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

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

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

Смежные вопросы