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


11

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

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

В настоящее время я не знаком с большинством решений, не относящихся к ArcGIS, поэтому любые советы приветствуются.

Ответы:


4

Вы можете просто закодировать свои функции в Javascript, как в этом примере OpenLayers: http://openlayers.org/dev/examples/vector-features.html . Не нужно беспокоиться о дальнейшем хранении данных. Конечно, это только вариант, если у вас мало функций для отображения. Но это «однофайловое» решение, которое любой будущий сопровождающий сможет найти.

Если вы можете экспортировать свои полигоны в шейп-файл, 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 Maps в OpenLayers. Ненавижу звучать так, будто я продвигаю коммерческие предложения, но похоже, что вы используете Open tech ради Open tech. Дайте организации достойно выглядящую карту.
Шон,

@Tanner: В каком формате у вас есть данные вашего района?
Подземье

Класс объектов полигона ArcGIS.
Таннер

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

10

Для решения с открытым исходным кодом вы можете рассмотреть следующее:

  1. Mapping Server Platform - GeoServer на основе Java и с открытым исходным кодом. Хорошо работает во многих производственных средах: проверьте: http://geoserver.org/display/GEOS/Welcome Руководства пользователя: http://docs.geoserver.org/stable/en/user/

    Другой вариант будет MapServer: http://mapserver.org/

    Проверьте сравнение: http://www.slideshare.net/novum.limitis/mapserver-vs-geoserver

  2. Клиентская сторона - скриптинг веб-страницы. Openlayers наиболее предпочтительны, чтобы начать как можно больше примеров и легко реализовать. Проверьте: http://openlayers.org/ Примеры: http://openlayers.org/dev/examples/

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

Если вы собираетесь использовать карты Google / Yahoo / Bing, вы можете использовать их API или OpenLayers, чтобы использовать GeoServer и Spatial Data. Несмотря на то, что задан вопрос о хорошем API веб-карты, платформа Mapping и ссылка на пространственные данные приведены выше, чтобы подумать о полностью открытой платформе картографирования.


Вроде то, что я сказал, но лучше поставить!
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 вы можете создать красивое веб-картографическое приложение с крошечным пространством.



2

Есть несколько отличных вариантов для некоммерческих организаций. Карты Bing и Google могут быть использованы для некоммерческих организаций.

Хорошая сводка здесь: Карты Google - http://www.georelated.com/2012/02/cloud-web-map-api-services-reviewed.html Карты Bing - http://www.georelated.com/2012 /02/cloud-web-map-api-services-reviewed_19.html


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

В продолжение ответа @ Шона, вот вопрос, который я задал в октябре прошлого года, и решение. Я тоже хотел что-то, что можно передать. Что касается отображения границ вашего района, может ли Fusion Tables это сделать?


1

CloudMade , Google Maps , Yahoo! Карты или Карты Bing . В конце концов, кто-то придет помочь им с их сайтом и не будет иметь понятия о OpenLayers или GeoJSON. Будет гораздо более перспективным использовать известное коммерческое предложение. Им будет легче найти человека, который знает, что делать с Google Maps, и у него будет знакомый интерфейс. И это все еще бесплатно для публичных сайтов.

Убедитесь, что вы получите их собственный ключ API.


3
Этот вопрос помечен как «с открытым исходным кодом», а не с пониженным голосованием, потому что вы имеете право предложить коммерческую версию. Я просто хочу сказать, что с картами Google вам нужно будет обновить код после 3-летнего ограничения, заставляя вас снова и снова разрабатывать одно и то же приложение для каждой новой версии API карт Google. Разрабатывая openlayers, вы можете самостоятельно размещать библиотеку столько, сколько захотите. Вам не нужно беспокоиться о том, что кто-то щелкнет выключателем, который отключит ваш сервис.
CaptDragon

1
Я ничего не имею против open-source. Наоборот. Возможно, я интерпретировал «открыто» либерально (и я не воспринимаю теги как ограничивающие). Однако для проблемной области, к которой он обращается, предложения для OpenLayers, MapServer, GeoServer, OpenStreetMap и т. Д. Технически более сложны, чем 99,9% некоммерческого персонала, которые могут справиться самостоятельно. Если он хочет помочь организации, он должен дать им что-то, что они могут исправить, или легко найти кого-то, чтобы исправить, когда он уйдет. Количество людей, имеющих Google Maps в своем наборе навыков, значительно выше и не требует доступа к org серверу.
Шон

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.