Мне нужно создать веб-карту, показывающую много растровых слоев. Я использую mapserver и хочу использовать Openlayers, однако я не могу найти хорошее руководство по этому поводу. Я вижу пару старых вопросов ( 1 и 2 ) о том, что хорошей документации не было. Изменились ли вещи в последнее время?
Я хотел бы найти учебное пособие от основ до довольно сложных вещей с хорошими объяснениями кода и рисунками / примерами результатов. На данный момент мне удалось создать только простейшую веб-карту с моим файлом .map , но мне нужно настроить ее (добавить легенды, групповые слои, добавить дополнительные элементы управления, встраивание и т. Д.).
В дополнение к вышеупомянутым отличным ответам, позвольте мне добавить свой собственный опыт. Полтора года назад я решил, что хочу использовать OpenLayers (OL) в своем магистерском проекте, и решил изучить его. Я занимаюсь программированием и созданием цифровых карт как часть моей работы в качестве археолога с начала 1980-х годов и являюсь пользователем ArcGIS в течение 15 лет. Я счастлив, что выбрал OL для своего проекта, но это не всегда было легко. Некоторые вещи не были очевидны и усвоены только методом проб и ошибок. Итак, у меня есть несколько советов для начинающих.
Мой путь обучения OL начался, когда я зарегистрировал учетную запись на 5 слотов в Safari Books Online за 10 долларов США в месяц. Я хотел просмотреть книги перед покупкой, и в нескольких магазинах, где можно было бы посетить, можно найти компьютерные книги, связанные с ГИС. Сейчас на OL 2 вышло три книги. Новая 58-страничная книга под названием Instant OpenLayers Starter от Di Lorenzo и Allegri (апрель 2013 г.) - хороший быстрый старт, но первые две книги и их примеры кода (доступны на веб-сайте издателя). сайт, а также бесплатный образец главы каждой книги) были хорошими ресурсами:
Из-за случайного разочарования по поводу совместимости css и браузера я закончил изучать JavaScript-фреймворк. Я выбираю Додзё, потому что именно это Перес использовал в своей книге. Современный Dojo (Dojo 1.7 +) - это подход, значительно отличающийся от предыдущих версий, использующий формат определения асинхронного модуля (AMD). Способ сделать все изменилось. Я не понимал, что в этой превосходной книге используется версия Dojo до 1.7, которая устарела за 9 месяцев до ее публикации в августе 2012 года. Esri продолжала использовать Dojo до 1.7 в своем JavaScript ArcGIS API до модернизации в июне 2012 года. и это стало болезненным переключением для многих разработчиков ArcGIS Javascript.
Чтобы понять, насколько плохо поддерживается Dojo, кроме книги, написанной в 2010 году о Dojo 1.3, большинство книг было написано в 2007 и 2008 годах. Для Modern Dojo нет опубликованных книг - вы должны учиться на онлайн-ресурсах, почти все которые находятся на их веб-сайте. В основном, чтобы работать с примерами из книги Переса, вам нужно знать достаточно о JavaScript, чтобы игнорировать биты Dojo и переместить примеры в простой JavaScript или в выбранную вами среду.
Оглядываясь назад, я хотел бы пойти с ExtJS Framework и GeoExt. ExtJS бесплатен, если ваш проект с открытым исходным кодом, и поскольку многие компании с удовольствием платят за поддерживаемую версию, они могут позволить себе тратить время на исчерпывающую документацию и учебные материалы для веб-сайтов.
Я учусь лучше всего, работая с / взламывая отдельные примеры. Разработчики в OpenLayers придерживаются той же философии, что и основная документация, на которую они указывают при изучении, изучая примеры. Тем не менее, некоторые примеры OL на их веб-сайте и в других местах имеют проблемы, которые могут запутать новичков. (См. ниже.)
Использование примеров в качестве документации также означает, что у пользователя нет ощущения хорошего рабочего процесса для разработки веб-карты. Это может привести к тому, что карты будут выглядеть неполными - например, им может не хватать настроек CSS для пользовательского интерфейса карт и «внешнего вида». Переопределение OL css с настройками кажется пугающим для новичка, но Firebug может помочь вам найти имена элементов, которые нужно переопределить. Отсутствие ощущения принятого рабочего процесса также может привести к созданию Frankencode, так как пользователи вводят в свой код функции, которые они считают нужными.
Это подводит меня к последнему пункту, в котором, как мне кажется, отсутствует документация по сайту OL, - чувство «наилучшей практики» для карт OL. Есть ли лучший способ организовать мой код, чтобы он был модульным и надежным? Каковы подводные камни в JavaScript-закрытиях и объектах OL? Где я должен объявить свои стили? И так далее.
Помимо различных устаревших файлов в вики, есть две основные проблемы, о которых должен знать новичок при изучении официальных примеров OL и документов API. Во-первых, на странице примеров разработки OL на веб-сайте OL нет организации. Он просто представляет канал из файла xml в этом каталоге (example-list.xml) примеров (207 из них по состоянию на 13 февраля 2014 года) и сортирует строки в алфавитном порядке по имени файла в сетке. Более сложные примеры смешиваются с базовыми. Вы можете искать примеры по ключевым словам, но во многих примерах отсутствуют ключевые слова, а функция поиска включает в себя контент и заголовок страницы в поиске, а не только ключевые слова. Результаты возвращаются с наибольшим количеством поисковых терминов, которые соответствуют первому, за которым следует частота слова. Только одно из условий поиска должно совпадать, чтобы отображаться в результатах. На странице UserRecipes в OL Wiki перечислены около 90 примеров, организованных по категориям, и эта классификация является справочной. Из них 66 - это прямые ссылки на примеры на странице примеров, а остальные - плохие ссылки на удаленные примеры.
Во-вторых, в основном есть две версии документации API, которые на первый взгляд кажутся одинаковыми. Официальный API находится в каталоге / apidocs, а передовая, но нестабильная библиотека разработчика находится в каталоге / docs. URL-адреса одинаковы в противном случае. (Существуют также транковые версии.) Просто отредактируйте адрес страницы, чтобы увидеть другую версию. Вики отмечает, что на библиотеку разработчика не следует полагаться, поскольку свойства, функции и т. Д. Могут быть удалены из библиотеки в любое время. Поскольку OpenLayers 3 близок к реальности (он доступен в бета-версии, и сейчас в нем есть книга), я подозреваю, что в будущем в OL 2 не так много изменится. Основное внимание сейчас уделяется OL 3.
В целом, я считаю, что страницы OL API чрезмерно скелетны, часто не хватает объяснений или иллюстративных примеров, особенно для тех, кто использовал библиотеку с более полной документацией по API. То, как оно представлено, не дает четкого представления об объекте, от которого он наследуется.
Из примеров OL в Интернете в целом многие используют объекты или синтаксис, который устарел, потому что он был заменен улучшенными версиями. Например, Layer.Vector теперь является предпочтительным способом рисования маркеров, поскольку Layer.Marker устарел в версии 3. Изучите файл deprecated.js, чтобы убедиться, что вы не используете объекты, которые находятся на выходе. Или, по крайней мере, будьте внимательны, если вы обновите свой код до OL 3, вам придется это изменить.
В дополнение к семинару по Boundless OpenLayers, на который ссылается Жюльен-Сэмюэль Лакруа выше, у IBM есть классное учебное пособие, пусть и трехлетнее, которое использует OpenLayers, MapServer, Google Gears и jQuery для создания полного веб-приложения ГИС: объединение данных с OpenLayers : Использование данных из разных источников в веб-картах
Также ознакомьтесь с этим полезным постом о стилизации переключателя слоев.
Гугл слова OpenLayers и jsFiddle, чтобы получить некоторые примеры скрипок OL. Результатом с сайта techslides является страница со списком довольно многих из них.
Наконец, имейте в виду, что изображения карт в большинстве примеров взяты с серверов OpenStreetMap (OSM), и они время от времени выходят из строя, запланированные или незапланированные, и вы получите розовые плитки на их месте. Иногда вы будете думать, что испортили свой код. Вы можете проверить статус платформы в вики OpenStreetMap.
источник
Посмотрите на мастерскую Boundless OpenLayers . Это покрывает много материала. Семинар использует GeoServer вместо MapServer, но вы можете просто изменить URL-адрес примера на сервис MapServer WMS.
источник
Open Layers - фантастический пакет, невероятно гибкий, но в нем не хватает документации для начинающих, но есть тонна подробной документации для разработчиков.
Когда я только начинал, то делал, чтобы просмотреть все примеры , выбрать те, которые имели требуемую функциональность, проанализировать код и шаг за шагом наращивать функциональность, тестируя по мере продвижения. Я обнаружил, что пробуя слишком много функциональности в одном хите, было сложнее разобраться в концепциях и проблемах отладки.
Затем я обнаружил, что GIS @ SE оказал большую помощь по конкретным вопросам: либо изучал вопросы других людей, либо задавал свои.
Кроме того, @Julian, вероятно, дал вам лучший вариант с точки зрения учебников, они довольно хороши.
источник
Просто чтобы упомянуть, эта страница от OpenGeo была также полезна для меня. Они начинаются с основ и имеют хороший пример событий GetFeatureInfo с удалением всплывающих окон.
источник