Підручник для OpenLayers? [зачинено]


12

Мені потрібно створити веб-карту, на якій зображено багато растрових шарів. Я використовую Mapserver і хочу використовувати Openlayers, проте не можу знайти жодного хорошого підручника з цього приводу. Я бачу пару старих запитань ( 1 і 2 ), які говорили про те, що хорошої документації не було. Чи змінилися речі останнім часом?

Я хотів би знайти навчальний посібник з основ до досить складних речей з хорошими поясненнями коду та картинками / прикладами результатів. Наразі мені вдалося зробити лише найпростішу веб-карту зі своїм файлом .map , але мені потрібно її налаштувати (додати легенди, групові шари, додати більше елементів управління, вбудовування тощо)

Відповіді:


7

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

Книга: Ерік Хаззард OpenLayers 2.10 Посібник для початківців. Він доступний у видавництві Packt.

Я настійно рекомендую книгу, оскільки вона стосується всіх основних частин Бібліотеки. Він починається з основ і повільно допомагає вам перейти до складних частин API.


2
Він доступний як електронна книга звідси за 14,44 фунта виглядає чудово.
Марк Купітт

Ціна залежить від країни, з якої Ви отримуєте доступ до неї. Він показує мені ціну, яка приблизно $ 3;
Devdatta Tengshe

Нічого собі, я думаю, у філіппінах ми отримуємо штраф. повинен змусити вас купити його для мене :-)
Марк Купітт

Дякую за пораду, щойно дістала книгу від друга, подивимось ...
nadya

Ви не можете використати щось на зразок PirateBrowser, щоб приховати свою країну та придбати її за найнижчою ціною?
Нижче

13

Окрім вищезазначених відмінних відповідей, дозвольте додати власний досвід. Ще півтора року тому я вирішив, що хочу використовувати OpenLayers (OL) у проекті свого магістра, і взявся навчитися цьому. Я займаюся програмуванням та виготовленням цифрових карт, як частиною своєї роботи в якості археолога з початку 1980-х років, і користувачем ArcGIS протягом 15 років. Я щасливий, що обрав OL для свого проекту, але не завжди це було повним навчанням. Деякі речі не були очевидними та дізнавалися лише шляхом спроб та помилок. Отже, у мене є поради для початківців.

Моя навчальна програма OL справді почалася, коли я зареєструвався на 5-ігровому рахунку в книжковій полиці на Safari Books Online за 10 доларів США на місяць. Я хотів переглянути книги перед покупкою, і в кількох магазинах можна відвідати комп'ютерні книги, пов'язані з ГІС. Зараз на OL 2. виходять три книги. Новіша книга на 58 сторінках під назвою Instant OpenLayers Starter від Di Lorenzo та Allegri (квітень 2013) - хороший швидкий старт, але перші дві книги та їх зразки коду (доступні в Інтернеті видавця Сайт разом із безкоштовним зразком глави кожної книги) були хорошими ресурсами:

  • OpenLayers 2.10: Посібник для початківців Ерік Хаззард (березень 2011 р.)
  • Кулінарна книга OpenLayers від Антоніо Сантьяго Перес (серпень 2012 р.)

Через періодичні розлади через сумісність css та веб-переглядачів я також довідався рамки JavaScript. Я вибираю Доджо, тому що саме це використовував Перес у своїй книзі. Сучасний Dojo (Dojo 1.7 +) суттєво відрізняється від попередніх версій, використовуючи формат визначення асинхронного модуля (AMD). Спосіб виконання всього змінився. Я не розумів, що ця інакше відмінна книга використовує до-1.7 версію Dojo, яка була застаріла за 9 місяців до того, як книга була опублікована в серпні 2012 року. Есрі продовжував використовувати доджо-1,7 доджо в своєму API ArcGIS JavaScript до модернізації в червні 2012 року , і це було болісним перемиканням для багатьох розробників ArcGIS Javascript.

Щоб зрозуміти, наскільки погано підтримується Доджо, окрім книги, написаної у 2010 році про Dojo 1.3, більшість книг написані у 2007 та 2008 роках. Немає опублікованих книг для Modern Dojo - ви повинні навчитися з інтернет-ресурсів майже всіх які є на їх веб-сайті. В основному, для роботи з прикладами в книзі Переза, вам потрібно знати достатньо JavaScript, щоб ігнорувати біти Доджо і переміщувати приклади в звичайний JavaScript або ваш вибір на вибір.

Заднім числом я хотів би, щоб я пішов з рамками ExtJS та GeoExt. ExtJS безкоштовний, якщо ваш проект є відкритим кодом, і оскільки багато компаній із задоволенням платять за підтримувану версію, вони можуть дозволити собі витратити час на вичерпну документацію та навчальні матеріали на веб-сайті.

Я найкраще навчаюся, працюючи з / зломляючи приклади. Розробники OpenLayers мають таку саму філософію, що і основна документація, яку вони вказують для навчання, - це вивчення прикладів. Однак деякі приклади OL на їхньому веб-сайті та в інших місцях мають проблеми, які можуть змусити початківців спотикатися. (Дивіться нижче.)

Посилання на приклади як документацію також означає, що користувач не має хорошого робочого потоку для розробки веб-карти. Це може призвести до створення карт, які вважаються неповними - наприклад, їм може не вистачати налаштувань css для користувальницького інтерфейсу карт та "виглядати і відчувати". Перевизначення OL-css за допомогою налаштувань вважає загрозливим для початківця, але Firebug може допомогти вам знайти імена елементів, які вам потрібно змінити. Відсутність відчуття прийнятого робочого потоку також може призвести до створення Frankencode, оскільки користувачі shoehorn включають у свій код так, як їм здається, що вони цього хочуть.

Це призводить мене до останнього пункту, який, як мені здається, не вистачає в документації на 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, вам потрібно буде це змінити.

На додаток до семінару безмежних OpenLayers, пов’язаного Джульєном-Самуелем Лакруа вище, IBM має класний підручник, хоч і три роки, який використовує OpenLayers, MapServer, Google Gears та jQuery для створення повноцінного веб-додатка GIS: Наведіть дані разом з OpenLayers : Використання даних з різних розбіжних джерел у веб-картах

Також ознайомтеся з цією корисною публікацією про стилізацію перемикача шарів

Google наведіть слова OpenLayers і jsFiddle, щоб отримати кілька прикладів OL-загадок. Результатом сайту Techslides є сторінка, в якій перераховано досить багато таких.

Нарешті, майте на увазі, що зображення карт у більшості прикладів - із серверів OpenStreetMap (OSM), і вони раз у раз знижуються, планові чи незаплановані, і ви отримаєте на їх місці рожеві плитки. Іноді вам здасться, що ви накрутили свій код. Ви можете перевірити стан платформи на вікі OpenStreetMap.


2
Це хороший детальний відповідь. Прикро, що у нас не так багато подібних відповідей на сайті.
Devdatta Tengshe

Leta, дякую за всю відповідь! Зараз я борюся з GeoExt (і ExtJS), і вона має ще більше проблем з навчальними , ніж ПР, їх приклади виглядають досить як цей :)
Nadya


4

Відкриті шари - це фантастичний пакет, неймовірно гнучкий, але він не має документації для початківців, але має багато детальної документації для розробників.

Що я зробив, коли вперше почав, - це переглянути всі Приклади , вибрати ті, які мали функціонал, який я хотів, проаналізував код і розробив функціональність поетапно, тестуючи, як я пішов. Я виявив, що спроба занадто багато функціональних можливостей одним хітом ускладнювала розум навколо концепцій та проблем налагодження.

Тоді я знайшов GIS @ SE, який був великою допомогою для вирішення конкретних питань, або досліджував питання інших людей, або задаючи мої власні.

Крім того, @Julian напевно дав вам найкращий варіант з точки зору навчальних посібників, вони непогані.


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

2

Відзначимо, ця сторінка OpenGeo також була мені корисною. Вони починаються з основ і мають хороший приклад подій GetFeatureInfo із видаленням спливаючих вікон.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.