Що таке хороший веб-API Javascript (бажано відкритий) для створення веб-карт, які потребують незначного / не потребують обслуговування?


11

Нещодавно я зголосився зробити веб-карту для місцевого некомерційного. Карта буде досить базовою. Він повинен відображати округ Лейн, штат Орегон, розділений на кілька районів, з центральним офісом для кожного району. Я планую будувати це у вільний час протягом літа, і хочу, щоб я міг передати це їм з дуже невеликим ризиком, що це потребує будь-якого майбутнього обслуговування.

Я створив декілька веб-карт за допомогою ArcGIS Javascript API з ArcGIS Server, але я планую вивчити інший API, оскільки ця організація не має програмного забезпечення ESRI (або будь-якого GIS з цього приводу). Я розглядав OpenLayers / OpenGeo. Слід пам’ятати, що ця організація не має / не матиме сервера, встановленого для розміщення шарів цієї карти, тому я не впевнений, як би я зберігав та отримував доступ до даних. JSON, можливо?

Наразі я незнайомий з більшістю рішень, що не належать до ArcGIS, тому будь-які поради будуть вдячні.

Відповіді:


4

Ви можете просто жорстко кодувати свої функції в Javascript, як у цьому прикладі OpenLayers: http://openlayers.org/dev/examples/vector-features.html . Не потрібно турбуватися щодо подальшого зберігання даних. Звичайно, це лише варіант, якщо у вас мало функцій для відображення. Але це "однофайлове" рішення, яке повинен мати змогу визначити будь-який майбутній сервіс.

Якщо ви можете експортувати свої багатокутники у shapefile, QGIS може допомогти "витягти вузли", які ви можете використовувати для створення полігонів у OpenLayers, як це:

// create a polygon feature from a linear ring of points
var pointList = [new OpenLayers.Geometry.Point(x1,y1),new OpenLayers.Geometry.Point(x2,y2),<<<more points>>>];
var linearRing = new OpenLayers.Geometry.LinearRing(pointList);
var polygonFeature = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Polygon([linearRing]));

Якщо ви хочете перекрити ці багатокутники поверх Карт Google чи подібних, ви можете спершу відмовити полігони в проекцію Web Mercator.


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

1
@Tanner: Ви можете використовувати GDAL / OGR для перетворення в GeoJSON. Принаймні, подаруйте їм Cloudmade, Google Maps, Yahoo! Карти або базовий шар Карт Bing у OpenLayers. Мені не подобається звучати так, як я підштовхую комерційні пропозиції, але це здається, що ви використовуєте Open tech заради Open tech. Надайте органу гідну вигляд карту.
Шон

@Tanner: У якому форматі у вас є дані про ваш район?
underdark

Особливий клас полігону ArcGIS.
Таннер

@Sean: Дякую за пораду. Я перевірю GDAL / OGR. Оскільки це волонтерський проект, це (сподіваємось) разова угода. Я не хочу повертатися до цього. Основна проблема - створити просту веб-карту, яку можна розмістити на їхньому веб-сайті, яка не потребуватиме жодного серверного програмного забезпечення (наприклад, MapServer) і, найменше, швидше вийде з ладу. Якщо комерційний базовий шар / API може забезпечити це, я буду враховувати це. Принаймні, я, швидше за все, буду використовувати комерційний базовий шар.
Таннер

10

Для рішення з картою відкритого коду ви можете врахувати наступне:

  1. Серверна платформа Mapping - сервер GeoServer на базі Java та відкритий код. Добре працює у багатьох виробничих середовищах: Перевірте: http://geoserver.org/display/GEOS/Welcome Посібники користувача: http://docs.geoserver.org/stable/uk/user/

    Іншим варіантом буде MapServer: http://mapserver.org/

    Перевірте порівняння: http://www.slideshare.net/novum.limitis/mapserver-vs-geoserver

  2. Сторона клієнта - сценарій веб-сторінки. Найбільш переважним є відкриті шари, які можна розпочати якнайбільше прикладів, а також легко реалізувати. Перевірте: http://openlayers.org/ Приклади: http://openlayers.org/dev/examples/

  3. Просторові дані: Ви можете користуватися картами Google / Yahoo / Bing залежно від їхніх умов та ліцензії. Або OpenStreet Maps, які ви можете опублікувати в GeoServer і використовувати його. Мапу OpenStreet: http://www.openstreetmap.org/ Файли форм OpenStreet Map можна завантажити через: http://wiki.openstreetmap.org/wiki/Shapefiles

Якщо ви збираєтесь використовувати карти Google / Yahoo / Bing, ви можете скористатися їх API або OpenLayers, щоб використовувати його, а GeoServer і просторові дані не потрібні. Навіть незважаючи на те, що запитують про хороший API веб-карти, платформа картографування та посилання на просторові дані наведені вище додатково, щоб подумати про повністю відкриту платформу картографування.


Ніби те, що я сказав, але краще сказати!
MerseyViking

3

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

Легко додавати шари, що надходять з іншого сервера за допомогою WMS; У мене працює MapServer, який виділяє плитки WMS, а з OL я просто використовую:

var layer = new OpenLayers.Layer.WMS(
    "Resistivity",
    "http://mywebsite.com/maps?map=amap.map",
    {'layers': 'resistivity', 'format':'image/png', 'transparent':'true'},
    {singleTile: true}
);

map.addLayer(layer);

Дійсно, він може впоратися з WFS і навіть серверами WFS-T, а з OSM, Google або Bing картами та шарами для фотографій ви можете мати гарний додаток для веб-картографічних зображень із крихітним слідом.


3

Використовуйте OpenLayers та YES, якщо ви не можете встановити GeoServer для розміщення шарів вашої карти, ви можете зберігати дані у GeoJSON або локальних файлах KML, якщо хочете.



2

Супер пізно на вечірку, але я подумав, що додам ще один варіант, який має сенс сьогодні.

Якщо ви не хочете розмістити сервер, але все ще хочете отримати вигоду від стилізації та дуже швидкого кешування плиток, чому б не Google Fusion Tables та Openlayers ? З блогу Аллана Глена

var proj_4326 = new OpenLayers.Projection('EPSG:4326');
var proj_900913 = new OpenLayers.Projection('EPSG:900913');
map = new OpenLayers.Map({
   div: "map",
   projection: proj_900913,
   'displayProjection': proj_4326,
   allOverlays: true
});

var osm = new OpenLayers.Layer.OSM();

var fusionLayer = new OpenLayers.Layer.OSM("Fusion Table       
Map","http://mt0.googleapis.com/mapslt?hl=en- 
US&lyrs=ft:113681&x=${x}&y=${y}&z=${z}&w=256&h=256&source=maps_api");
map.addLayers([osm,fusionLayer]);

var long=12;
var lat=56.5;

var lonlat = new OpenLayers.LonLat(long,lat).transform(map.displayProjection,
map.projection);

map.setCenter(lonlat, 6);

Ви можете використовувати gdal для завантаження таблиць синтезу . Таким чином, ви не платите ціну розбору геоізонових геометрій на стороні клієнта. Ця вартість може варіюватися від тривіальної (для невеликої кількості функцій) до значної (для великої кількості функцій). Це також значно зробить вашу геометрію


1

Відповідно до відповіді @ Sean, ось питання, яке я поставив у жовтні минулого року, і рішення. Я теж хотів чогось, що можна було б передати. Що стосується відображення меж вашого округу, чи могли це зробити Fusion Tables?


1

CloudMade , Карти Google , Yahoo! Карти або Bing Maps . Зрештою, хтось прийде допомогти їм на своєму веб-сайті і не матиме поняття про OpenLayers або GeoJSON. Набагато більш надійним буде використання відомих комерційних пропозицій. Їм буде простіше знайти того, хто знає, що робити з Google Maps, і він матиме звичний інтерфейс. І це все ще безкоштовно для публічних сайтів.

Переконайтеся, що ви отримаєте їм власний ключ API.


3
Це питання позначене "відкритим кодом", а не голосуванням, оскільки ви маєте право запропонувати комерційну версію. Просто кажучи, за допомогою Google Maps потрібно буде оновити свій код після 3-х років вилучення, змушуючи вас продовжувати розробляти один і той же додаток для кожної нової версії Google Maps api. Після розробки з відкритими шарами ви зможете самостійно розміщувати бібліотеку стільки часу, скільки вам заманеться. Вам не доведеться турбуватися про те, щоб хтось перевернув перемикач, який вимкне вашу послугу.
CaptDragon

1
Я не маю нічого проти відкритого коду. Зовсім навпаки. Можливо, я інтерпретував "відкрито" вільно (і я не вважаю теги обмежувальними). Щодо проблемного домену, який він вирішує, проте пропозиції щодо OpenLayers, MapServer, GeoServer, OpenStreetMap тощо технічно набагато складніші, ніж 99,9% некомерційного персоналу можуть впоратися самостійно. Якщо він хоче допомогти органам, він повинен дати їм щось, що вони можуть виправити, або легко знайти когось, щоб виправити його, коли він піде. Кількість людей, які мають Карти Google у наборі навичок, значно більша, і вони не потребують доступу до будь-якого сервера.
Шон

1
Так, я поняття не маю, чому люди підголошують відповіді, які підказують GeoServer & MapServer, коли запитувач спеціально каже, що він не може розміщувати жодних сервісів карт. : P
CaptDragon

@capdragon: У відповідях також чітко зазначено, що GeoServer / MapServer та просторові дані необов’язкові. Можна продовжувати роботу з Openlayers без них. Без шкоди надати додаткову корисну інформацію у відповідь користувачеві, щоб їх усвідомити ...
Senthil

@Senthil: прочитайте його ще раз, і я цитую: "ця організація не має / не матиме сервера, встановленого для розміщення шарів цієї карти". Необов’язково - це навіть не слово у питанні.
CaptDragon

1

Напевно, варто перевірити CartoDB:

http://cartodb.com/

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

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