Он снова здесь
Помните, когда-то в древности была такая библиотека — OpenLayers? В своё время технологический прорыв, она выросла в большого некрасивого монстра, которым пользовались, скорее, от отсутствия альтернатив и от действительно хорошо оттестированного движка, работавшего даже на безнадёжно устаревших браузерах, вроде Opera. Последнее немного затормозило распространение Leaflet (и я был в числе недовольных, когда он захватил osm.org), но ненадолго: теперь библиотекой OpenLayers пользуются либо бородатые ГИС-программисты, либо новички, по несчастью наткнувшиеся на слишком старый учебник.
Две недели назад многолетняя работа по осовремениванию движка завершилась выпуском версии 3.0.0. На сайте, к сожалению, нет учебника, кроме несуразного quick start (прошлая версия тоже страдала отсутствием вменяемой документации), потому создаётся впечатление, что получилось стильно, кратко, молодёжно: даже скрипт библиотеки теперь называется ol.js. В анонсах упор делают на WebGL и трёхмерные карты, хотя в примерах их непросто найти. Если погрузиться в справочник, всплывают страшные конструкции, вроде ol.control.defaults().extend({...}) для банального добавления элементов управления, и понимаешь, что проще не стало.
Пока писал эту заметку, делал и расширял небольшой пример использования библиотеки, значительно проще официального. Вот что я вынес из этих шести строчек и пары десятков страниц документации:
- чтобы написать шесть строчек кода, нужно прочитать пару десятков страниц документации по API: примеры и учебник только запутают;
- А-А-А-А! нажмите Alt+Shift и подвигайте карту! Включено по умолчанию!
- надеялся, что за это время в команде появился дизайнер, но нет: все элементы интерфейса так же неприглядны;
- по умолчанию прячут копирайты под значок — что в своё время не сошло с рук MapBox-у;
- снова чехарда с проекциями, но полегче: не нужно создавать кучу вспомогательных классов;
- потому что многие константы и объекты можно заменить простыми строками;
- не lat-lon, а lon-lat, как у взрослых;
- снова тысяча мелочей из коробки, вроде библиотеки слоёв, экспорта в PNG, разбора OSM XML, кластеринга и heatmap-ов;
- несмотря на обещанный «high-quality documentation», хорошо выглядит только справочник по API, да и то — до первого вопроса про типы параметров функций;
- дробный масштаб — не для солидных людей, судя по отсутствию простого способа его включить;
- надеялся на функциональный аналог Leaflet.draw, но его нет;
- боюсь представить, как к библиотеке пишутся плагины;
- интерактивная карта на главной openlayers.org — самая узкая, что я когда-либо видел.
В целом, здорово, что OpenLayers жив. Он — необходимый противовес Leaflet, почти полная противоположность: подтормаживает, сложный и насыщенный API (хотя файл js больше всего в три раза), разработчиков команда, версия больше нуля. Поначалу эта заметка должна была быть негативной, но когда разбираешься, как и зачем сделаны некоторые непривычные вещи в библиотеке, понимаешь объём проделанной работы, её суть и адресатов. Пока не стоит бежать переписывать на неё все свои проекты, но после пары минорных релизов и выпуска документации OpenLayers, без сомнения, пошатнёт позиции Leaflet как «монополиста» в пользовательской картографии.
Эх, на старенькой опере не отображаются тайлы, хотя ошибок в коде нету :(
Ну и почему попрятали копирайты не понятно.
Решил использовать их из-за возможности поворота карты, но оказалось, что их векторная отрисовка здорово тормозит на мобильных. А крутить тайлы, когда надписи будут переворачиваться самыми неприглядными способами, как-то не комильфо.
«А-А-А-А» у меня глючит, почти всегда после этого действия тайлы пропадают вообще.
На старой Опере вообще пустой белый лист ))
Ня, оверзум.
Draw там и не будет никогда, в OL концепция нарисуй чтонибудь на карте никогда не приветствовалась. Это всегда были данные с определенным стилем отрисовки. Собственно как у всех гис, и именно это мне нравилось в OL и не нравится в LL.
Еще порастекаюсь мыслью по OL. Отсутсвие Draw в OL в том виде в котором он реализован в LL — прямое следствие того что в OL есть объекты на отсутсвие которых мы постоянно жалуемся. В OL нельзя нарисовать что-то, это обязательно должен быть объект, у него могут быть данные/свойства, геометрия и стиль с которым геометрия объекта отрисовывается.
Врядли OL найдет широкое распространение как картоапи широкого применения как сейчас LL или Google, но веб морды к ArcGIS и прочим *GIS наверняка будут использовать леерсы.
Помнится мне хватило 2-3 вечеров что бы не зная JavaScript вообще, сделать по примерам и наводящим подсказкам на OL сайт с картой, с несколькими слоями, включая векторные.
В LL я упёрся в жёсткую необходимость не то, что бы быть знакомым с программированием на JS, а вообще свободно владеть им и писать код на лету. LL был и остаётся библиотекой для программистов, а OL всегда ориентировался на возможность его внедрения любым техническим специалистом, а не только гуру JS кодинга.
Какое бы не было ПО, без вменяемой документации по его использованию (а не программированию для него), оно не может считать нормальным. Подождём ещё пару лет, может быть когда выйдет первый релиз LL, у него появится вменяемая документация по его использованию, а не по его разработке.
OL3 видел только в бетах, надо будет попробовать его как нибудь в деле.
Я не видел нормальной документации по OpenLayers 2. Если не считать книжки на амазоне. Who Did It я писал копированием кода из многочисленных примеров на сайте и копаясь в справочнике API. Получилось, конечно, много лучше, чем если бы я это тогда делал на лифлете с моим близким к нулю опытом в JS.