Записки программиста, обо всем и ни о чем. Но, наверное, больше профессионального.

2013-02-21

ArcGIS web maps

Уже изрядное время я занят разработкой вьювера (сегодня известного в узких кругах как Картобонус) на базе ArcGIS Viewer for Silverlight. Когда-то наш клиент выразил заинтересованность в таком вьювере и мы начали работы. Клиент давно уж соскочил, а мы до сих пор пытаемся из этого что-то выжать. А ведь Esri предлагает и другие варианты для работы с веб-картами.

Сначала вобью гвоздь в гроб Silverlight. Самая большая проблема связанная с использованием Silverlight, это привязка к решениям Microsoft. Грубо говоря, сильверлайтные программы работают только на MS Windows. С другими недостатками можно мириться или бороться или обходить их. Но привязку к MS Windows побороть невозможно.

ОК, закрыли тему Silverlight.

Посмотрим на ArcGIS Viewer for Flex.
Есть Application Builder
для работы которого нужен рантайм Adobe AIR. Этот билдер дает возможность в несколько щелчков мышкой сформировать папочку с картографическим веб-приложением. Если есть MS IIS или Apache HTTPD, то сразу получаем рабочую веб-карту. Клиенту, кроме браузера с плагином flash, ничего не надо.
Билдер работает несколько глюкаво, но генерирует вполне приличные карты с хорошим набором функций в обвязке ArcGIS Viewer for Flex.

Сравним с решением на Silverlight.
Достоинства: вьювер работоспособен не только на винде; доступен открытый исходный код вьювера; есть виджеты отсутствующие в сильвере. Развертывание на сервере проще; строить веб-карту легче. В галерее виджетов есть уже 135 полезняшек http://www.arcgis.com/home/search.html?q=flex%20viewer%20widget&t=content
Недостатки: нет (пока не нашел?) виджета добавления слоев; настройка и фильтрация данных слоя отсутствует.

Некоторые полезные доп.виджеты из галереи: редлайн и измерения http://www.arcgis.com/home/item.html?id=91a0014160fc4a9caadc2c7fd7089c1b

На этом про Flex всё.

Третий вариант из доступных трех — ArcGIS API for JavaScript.
Для яваскрипт нет билдера, такого как для флекс или сильлвера. Но есть функция публикации в ArcGIS Online http://www.arcgis.com/home/webmap/viewer.html
которая позволяет скачать подготовленную в их построителе карту в виде пакета для развертывания у себя. А еще есть набор шаблонов в галерее http://www.arcgis.com/home/group.html?owner=esri_en&title=Web%20Application%20Templates
Их можно использовать для того, чтобы не писать веб-карту с нуля.

Потом сохранил; опубликовал 'Make a web application', выбрал шаблон, 'download'. На компе образовался пакет в виде ZIP архива. Дальше все по инструкции, показываемой в процессе сохранения.
Распаковал в папку веб-сервера; почитал readme.html; внес несколько правок в яваскрипты приложения. Наступил на грабли.
Грабли положены вокруг переменной sharingurl. Когда она не определена, то не грузится карта с сообщением «Unable to load http://hostname/sharing/content/items/dbd1c6d52f4e447f8c01d14a691a70fe?f=json»
а как ее правильно записать - не сказано. В форуме (http://forums.arcgis.com/threads/5357-Sample-Javascript-Viewer?p=259888&viewfull=1#post259888)
нашлось решение, переменная должна выглядеть так
Тогда все работает как положено. Если не считать за грабли некоторую неактуальность readme.html, то на этом трудности заканчиваются.

Достоинства и недостатки, по сравнению с Silverlight.
Достоинства: вьювер на яваскрипт работает вообще везде; очень быстрый цикл разработки — не надо ничего компилировать и билдить; не нужно покупать MS Visual Studio или Adobe Flash Builder; доступна обширная коллекция примеров и готовых решений http://help.arcgis.com/en/webapi/javascript/arcgis/index.html; вокруг полно спецов по яваскрипт.
Недостатки: нет билдера для быстрого изготовления веб-карт; собрать полнофункциональную веб-карту трудозатратнее, чем для флекс или сильвера. Такой красоты как на флексе или сильвере, в яваскрипт достичь можно, но это будет очень непросто. Доступ к локальным ресурсам (диски на компе пользователя) сильно затруднен или вообще невозможен. В этом плане вьювер на Flex забарывает всех.

Выводы.
Заполнять сайт заказчика картами выгоднее с использованием ArcGIS Viewer for Flex - Application Builder.
Разрабатывать универсальные приложения на перспективу логичнее на JavaScript.
Silverlight должен умереть.

Вот такой обзорчик получился.

original post http://vasnake.blogspot.com/2013/02/arcgis-web-maps.html

2 комментария:

  1. Спасибо огромное, быстро и просто разьяснили. Особенно порадовала ссылочка на виджет Identify. Уже думал самому придётся писать - пронесло

    ОтветитьУдалить
  2. А тут и свежие новости про "Сильверлайт должен умереть":
    http://blogs.esri.com/esri/arcgis/2014/02/21/esris-roadmap-for-web-developers/

    Given this shift in technology, Esri will aggressively encourage the use of the ArcGIS API for JavaScript to build custom and out of the box web applications. This year, we plan on advancing our JavaScript API to version 4.x to integrate new ArcGIS platform capabilities such as 3D visualization, enhanced vector rendering, and stream layers. We do not plan to add these new capabilities to the Flex and Silverlight APIs, which will remain at version 3.x.

    ОтветитьУдалить

Архив блога

Ярлыки

linux (241) python (191) citation (186) web-develop (170) gov.ru (159) video (124) бытовуха (115) sysadm (100) GIS (97) Zope(Plone) (88) бурчалки (84) Book (83) programming (82) грабли (77) Fun (76) development (73) windsurfing (72) Microsoft (64) hiload (62) internet provider (57) opensource (57) security (57) опыт (55) movie (52) Wisdom (51) ML (47) driving (45) hardware (45) language (45) money (42) JS (41) curse (40) bigdata (39) DBMS (38) ArcGIS (34) history (31) PDA (30) howto (30) holyday (29) Google (27) Oracle (27) tourism (27) virtbox (27) health (26) vacation (24) AI (23) Autodesk (23) SQL (23) Java (22) humor (22) knowledge (22) translate (20) CSS (19) cheatsheet (19) hack (19) Apache (16) Manager (15) web-browser (15) Никонов (15) functional programming (14) happiness (14) music (14) todo (14) Klaipeda (13) PHP (13) course (13) scala (13) weapon (13) HTTP. Apache (12) SSH (12) frameworks (12) hero (12) im (12) settings (12) HTML (11) SciTE (11) USA (11) crypto (11) game (11) map (11) HTTPD (9) ODF (9) Photo (9) купи/продай (9) benchmark (8) documentation (8) 3D (7) CS (7) DNS (7) NoSQL (7) cloud (7) django (7) gun (7) matroska (7) telephony (7) Microsoft Office (6) VCS (6) bluetooth (6) pidgin (6) proxy (6) Donald Knuth (5) ETL (5) NVIDIA (5) Palanga (5) REST (5) bash (5) flash (5) keyboard (5) price (5) samba (5) CGI (4) LISP (4) RoR (4) cache (4) car (4) display (4) holywar (4) nginx (4) pistol (4) spark (4) xml (4) Лебедев (4) IDE (3) IE8 (3) J2EE (3) NTFS (3) RDP (3) holiday (3) mount (3) Гоблин (3) кухня (3) урюк (3) AMQP (2) ERP (2) IE7 (2) NAS (2) Naudoc (2) PDF (2) address (2) air (2) british (2) coffee (2) fitness (2) font (2) ftp (2) fuckup (2) messaging (2) notify (2) sharepoint (2) ssl/tls (2) stardict (2) tests (2) tunnel (2) udev (2) APT (1) CRUD (1) Canyonlands (1) Cyprus (1) DVDShrink (1) Jabber (1) K9Copy (1) Matlab (1) Portugal (1) VBA (1) WD My Book (1) autoit (1) bike (1) cannabis (1) chat (1) concurrent (1) dbf (1) ext4 (1) idioten (1) join (1) krusader (1) license (1) life (1) migration (1) mindmap (1) navitel (1) pneumatic weapon (1) quiz (1) regexp (1) robot (1) science (1) serialization (1) spatial (1) tie (1) vim (1) Науру (1) крысы (1) налоги (1) пианино (1)