OpenLayers против Google Maps?

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

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

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

Ответ 1

Это действительно большие вопросы! Я профессиональный разработчик и поклонник 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 в службу картографической плитки и позволяют настраивать стиль. Я считаю, что вы можете настроить односторонние улицы (по вашему примеру) определенным образом. Области разработчиков CloudMade.

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

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

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

Ответ 2

Это не обязательно вопрос OpenLayers или Google Maps. Вы можете использовать Карты Google для своего фона карты в 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, Карты Yahoo, Виртуальную Землю MS и т.д., Или любые службы WMS и WFS yuo имеют доступ к

Ответ 3

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

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

Ответ 4

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

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

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

Ответ 5

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

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

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

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

Подробнее см. этот FAQ и Условия обслуживания.

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

Ответ 6

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

Ответ 7

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

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

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

Ответ 8

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

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

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

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

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

  • GoogleMaps имеет уличное представление, которое иногда полезно.

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

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

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

Ответ 9

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

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

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

Передача данных:

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

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

Ответ 10

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

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

Ответ 11

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

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

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

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

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

иметь приятный день