Was ist eine gute Javascript-Web-API (vorzugsweise offen) zum Erstellen von Webkarten, die wenig oder gar keine Wartung erfordern?

11

Ich habe mich kürzlich freiwillig gemeldet, um eine Webkarte für eine lokale gemeinnützige Organisation zu erstellen. Die Karte wird ziemlich einfach sein. Es muss Lane County, Oregon, angezeigt werden, aufgeteilt in mehrere Distrikte, mit einem "Zentralbüro" -Standort für jeden Distrikt. Ich habe vor, dies in meiner Freizeit über den Sommer zu bauen, und ich möchte es ihnen mit sehr geringem Risiko übergeben können, dass es irgendeine Art von zukünftiger Wartung benötigt.

Ich habe eine Reihe von Webkarten mit der ArcGIS-Javascript-API mit ArcGIS Server erstellt, plane jedoch, eine andere API zu erlernen, da diese Organisation keine ESRI-Software (oder kein GIS für diese Angelegenheit) hat. Ich habe über OpenLayers / OpenGeo nachgedacht. Eine Sache, die Sie beachten sollten, ist, dass in dieser Organisation kein Server zum Hosten der Ebenen dieser Karte eingerichtet ist / ist, sodass ich nicht sicher bin, wie ich die Daten speichern und darauf zugreifen soll. JSON vielleicht?

Ich bin derzeit mit den meisten Nicht-ArcGIS-Lösungen nicht vertraut, daher wäre jeder Rat willkommen.

Gerber
quelle

Antworten:

4

Sie können Ihre Funktionen einfach wie in diesem OpenLayers-Beispiel in Javascript fest codieren: http://openlayers.org/dev/examples/vector-features.html . Sie müssen sich nicht um weitere Datenspeicherung kümmern. Dies ist natürlich nur dann eine Option, wenn Sie nur wenige Funktionen anzeigen müssen. Aber es ist eine "One-File" -Lösung, die jeder zukünftige Betreuer herausfinden sollte.

Wenn Sie Ihre Polygone in Shapefile exportieren können, kann QGIS helfen, "die Knoten zu extrahieren", mit denen Sie dann Polygone in OpenLayers wie folgt erstellen können:

// 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]));

Wenn Sie diese Polygone über Google Maps oder ähnlichem legen möchten, möchten Sie die Polygone möglicherweise zuerst in die Web Mercator-Projektion projizieren.

Unterdunkel
quelle
Vielen Dank! Das sieht so aus, als könnte es das sein, was ich brauche, solange ich nicht zu viele Funktionen habe. Ich werde es ausprobieren. Ich muss nur herausfinden, wie ich meine aktuelle Distrikt-Polygon-Feature-Class in diese fest codierten Werte exportiere.
Tanner
1
@Tanner: Sie können GDAL / OGR verwenden, um in GeoJSON zu konvertieren. Geben Sie ihnen zumindest ein Cloudmade, Google Maps, Yahoo! Maps oder Bing Maps-Basisebene in OpenLayers. Ich mag es nicht so zu klingen, als würde ich kommerzielle Angebote vorantreiben, aber es klingt so, als würden Sie Open Tech für Open Tech verwenden. Geben Sie der Organisation eine anständig aussehende Karte.
Sean
@Tanner: In welchem ​​Format haben Sie Ihre Distriktdaten?
Underdark
ArcGIS-Polygon-Feature-Class.
Tanner
@ Sean: Danke für den Rat. Ich werde GDAL / OGR überprüfen. Da es sich um ein Freiwilligenprojekt handelt, handelt es sich (hoffentlich) um einen einmaligen Deal. Ich möchte nicht darauf zurückkommen müssen. Das Hauptanliegen ist es, eine einfache Webkarte zu erstellen, die auf ihrer Website gehostet werden kann, für die keine Serversoftware (wie MapServer) erforderlich ist und die am wenigsten wahrscheinlich bald kaputt geht. Wenn eine kommerzielle Basisschicht / API dies bereitstellen kann, werde ich dies in Betracht ziehen. Zumindest werde ich wahrscheinlich eine kommerzielle Basisschicht verwenden.
Tanner
10

Bei einer Open Source-Mapping-Lösung können Sie Folgendes berücksichtigen:

  1. Mapping Server Platform - GeoServer Java-basiert und Open Source. Funktioniert gut in vielen Produktionsumgebungen: Überprüfen Sie: http://geoserver.org/display/GEOS/Welcome Benutzerhandbücher: http://docs.geoserver.org/stable/en/user/

    Eine andere Option wäre MapServer: http://mapserver.org/

    Überprüfen Sie den Vergleich: http://www.slideshare.net/novum.limitis/mapserver-vs-geoserver

  2. Client-Seite - Webseiten-Scripting. Openlayers sind am besten geeignet, um möglichst viele Beispiele zu starten und auch einfach zu implementieren. Überprüfen Sie: http://openlayers.org/ Beispiele: http://openlayers.org/dev/examples/

  3. Geodaten: Sie können Google / Yahoo / Bing-Karten basierend auf deren Nutzungsbedingungen und Lizenz verwenden. Oder OpenStreet Maps, die Sie in GeoServer veröffentlichen und verwenden können. OpenStreet Map: http://www.openstreetmap.org/ OpenStreet Map-Formdateien können heruntergeladen werden über: http://wiki.openstreetmap.org/wiki/Shapefiles

Wenn Sie Google / Yahoo / Bing-Karten verwenden möchten, können Sie deren API oder OpenLayers verwenden, um GeoServer und Geodaten nicht zu verwenden. Obwohl die Frage nach einer guten Webkarten-API gestellt wurde, werden oben zusätzlich die Mapping-Plattform und die Geodatenreferenz angegeben, um über eine vollständig Open-Source-Mapping-Plattform nachzudenken.

Senthil
quelle
Ein bisschen was ich gesagt habe, aber besser gesagt!
MerseyViking
3

Ich benutze OpenLayers als Teil meiner UG-Dissertation und kann nichts dafür. Nun, ich kann, und ich war bis spät in die Nacht wach und habe versucht, es zum Verhalten zu bringen, aber das war größtenteils Unwissenheit meinerseits, als ich versuchte, eine mobilfreundliche Site zusammenzustellen, anstatt OL per se.

Mit WMS können ganz einfach Ebenen hinzugefügt werden, die von einem anderen Server stammen. Ich habe MapServer ausgeführt, der WMS-Kacheln verteilt, und von OL verwende ich nur:

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);

In der Tat kann es mit WFS- und sogar WFS-T-Servern umgehen, und mit OSM-, Google- oder Bing-Karten- und Fotoebenen können Sie eine gut aussehende Web-Mapping-App mit einem geringen Platzbedarf haben.

MerseyViking
quelle
3

Verwenden Sie OpenLayers und YES, wenn Sie GeoServer nicht zum Hosten Ihrer Kartenebenen installieren können. Sie können die Daten in GeoJSON- oder lokalen KML- Dateien speichern, wenn Sie möchten.

CaptDragon
quelle
2

Super spät zur Party, aber ich dachte, ich würde eine weitere Option hinzufügen, die heutzutage Sinn macht.

Wenn Sie keinen Server hosten möchten, aber dennoch vom Styling und dem sehr schnellen Zwischenspeichern von Kacheln profitieren möchten, warum nicht Google Fusion Tables und Openlayers ? Aus Allan Glenns Blog

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);

Sie können gdal verwenden, um die Fusionstabellen zu laden . Auf diese Weise zahlen Sie nicht den Preis für das Parsen der Geojson-Geometrien auf der Client-Seite. Diese Kosten können von trivial (für eine kleine Anzahl von Features) bis signifikant (für eine große Anzahl von Features) reichen. Es wird auch Ihre Geometrien viel machen

Ragi Yaser Burhum
quelle
1

In Anlehnung an die Antwort von @ Sean ist hier eine Frage, die ich im letzten Oktober gestellt habe, und die Lösung. Ich wollte auch etwas, das weitergegeben werden kann. Könnten Fusion Tables dies möglicherweise tun, um Ihre Bezirksgrenzen anzuzeigen?

Chad Cooper
quelle
1

CloudMade , Google Maps , Yahoo! Karten oder Bing-Karten . Irgendwann wird jemand mitkommen, um ihnen bei ihrer Website zu helfen, und keine Ahnung von OpenLayers oder GeoJSON haben. Es wird viel zukunftssicherer sein, ein bekanntes kommerzielles Angebot zu nutzen. Es wird für sie einfacher sein, jemanden zu finden, der weiß, was mit Google Maps zu tun ist, und es wird eine vertraute Oberfläche haben. Und es ist immer noch kostenlos für öffentlich zugängliche Websites.

Stellen Sie sicher, dass Sie ihnen ihren eigenen API-Schlüssel geben.

Sean
quelle
3
Diese Frage war mit "Open Source" gekennzeichnet und nicht mit "Down-Voting", da Sie das Recht haben, eine kommerzielle Version vorzuschlagen. Nur zu sagen, mit Google Maps müssen Sie Ihren Code aktualisieren, nachdem Sie 3 Jahre lang nicht mehr gezwungen waren, für jede neue Version der Google Maps-API immer wieder dieselbe App zu entwickeln. Sobald Sie mit Openlayern entwickelt haben, können Sie die Bibliothek so lange selbst hosten, wie Sie möchten. Sie müssen sich keine Sorgen machen, dass jemand einen Schalter drückt, der Ihren Dienst ausschaltet.
CaptDragon
1
Ich habe nichts gegen Open Source. Ganz im Gegenteil. Möglicherweise habe ich "offen" großzügig interpretiert (und ich nehme Tags nicht als einschränkend an). Für die Problemdomäne, die er anspricht, sind die Vorschläge für OpenLayers, MapServer, GeoServer, OpenStreetMap usw. technisch weitaus komplizierter, als 99,9% der gemeinnützigen Mitarbeiter alleine umgehen können. Wenn er der Organisation helfen will, sollte er ihnen etwas geben, das sie reparieren können, oder leicht jemanden finden, der repariert werden kann, wenn er weg ist. Die Anzahl der Personen mit Google Maps in ihren Fähigkeiten ist erheblich höher und erfordert keinen Zugriff auf den Organisationsserver.
Sean
1
Ja, ich habe keine Ahnung, warum die Leute die Antworten, die GeoServer & MapServer vorschlagen, hochstimmen, wenn der Fragesteller ausdrücklich sagt, dass er keine Kartendienste hosten kann. : P
CaptDragon
@capdragon: In den Antworten wurde auch klar angegeben, dass GeoServer / MapServer und räumliche Daten optional sind. Kann mit Openlayern ohne sie weitermachen. Kein Schaden, zusätzliche relevante Informationen in der Antwort an den Benutzer zu geben, um sie zu erkennen ...
Senthil
@Senthil: Lies es noch einmal und ich zitiere: "Diese Organisation hat keinen Server eingerichtet, um die Ebenen dieser Karte zu hosten." Optional ist nicht einmal ein Wort in der Frage.
CaptDragon
1

Es lohnt sich wahrscheinlich, CartoDB zu besuchen:

http://cartodb.com/

Es ist ein cleverer, kostenloser Web-Mapping-Service, mit dem Sie geografische Daten einfach laden und bearbeiten können. Ich bin mir nicht sicher, ob sie die Option haben, eine Karte "privat" zu machen.

Unicoletti
quelle