Che cos'è una buona API Web Javascript (preferibilmente aperta) per la creazione di mappe Web che richiedono poca / nessuna manutenzione?


11

Di recente mi sono offerto volontario per creare una mappa web per un locale senza scopo di lucro. La mappa sarà piuttosto semplice. Deve mostrare la contea di Lane, Oregon divisa in più distretti, con una posizione "ufficio centrale" per ogni distretto. Ho intenzione di costruirlo nel mio tempo libero durante l'estate e voglio essere in grado di consegnarlo a loro con il minimo rischio che necessiti di qualsiasi tipo di manutenzione futura.

Ho creato una serie di mappe Web utilizzando l'API Javascript ArcGIS con ArcGIS Server, ma sto pensando di apprendere un'API diversa poiché questa organizzazione non ha alcun software ESRI (o alcun GIS per quella materia). Ho preso in considerazione OpenLayers / OpenGeo. Una cosa da tenere a mente è che questa organizzazione non ha / non avrà un server impostato per ospitare i livelli di questa mappa, quindi non sono sicuro di come memorizzare e accedere ai dati. JSON forse?

Attualmente non ho familiarità con la maggior parte delle soluzioni non ArcGIS, quindi qualsiasi consiglio sarebbe apprezzato.

Risposte:


4

Potresti semplicemente codificare le tue funzionalità in Javascript come in questo esempio OpenLayers: http://openlayers.org/dev/examples/vector-features.html . Non è necessario preoccuparsi di ulteriore archiviazione dei dati. Ovviamente questa è un'opzione solo se hai poche funzionalità da visualizzare. Ma è una soluzione "a un solo file" che qualsiasi futuro manutentore dovrebbe essere in grado di capire.

Se puoi esportare i tuoi poligoni in shapefile, QGIS può aiutare a "estrarre i nodi" che puoi quindi usare per creare poligoni in OpenLayer in questo modo:

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

Se desideri sovrapporre quei poligoni sopra Google Maps o simili, potresti voler riproiettare i poligoni sulla proiezione di Web Mercator prima.


Grazie! Sembra che potrebbe essere quello di cui ho bisogno, purché non abbia troppe funzionalità. Lo proverò. Devo solo capire come esportare la mia attuale feature class poligonale District in questi valori codificati.
Tanner,

1
@Tanner: è possibile utilizzare GDAL / OGR per convertire in GeoJSON. Almeno, dai loro un Cloudmade, Google Maps, Yahoo! Mappe o livello base di Bing Maps in OpenLayers. Odio sembrare come se stessi spingendo offerte commerciali, ma sembra che tu stia usando Open tech per amor di Open tech. Dai all'organizzazione una mappa dall'aspetto decente.
Sean,

@Tanner: in quale formato hai i tuoi dati distrettuali?
underdark

Classe di funzionalità poligono ArcGIS.
Tanner,

@Sean: grazie per il consiglio. Controllerò GDAL / OGR. Dato che si tratta di un progetto volontario, si tratta (si spera) di una volta. Non voglio tornare indietro. La preoccupazione principale è quella di creare una semplice mappa web che possa essere ospitata sul loro sito Web e che non richieda alcun software server (come MapServer) e che probabilmente si interromperà presto in qualsiasi momento. Se un livello base / API commerciale può fornire questo, lo prenderò in considerazione. Per lo meno userò probabilmente uno strato base commerciale.
Tanner,

10

Per la soluzione di mappatura open source, puoi considerare quanto segue:

  1. Mapping Server Platform - GeoServer basato su Java e open source. Funziona bene in molti ambienti di produzione: Verifica: http://geoserver.org/display/GEOS/Benvenuti manuali utente: http://docs.geoserver.org/stable/en/user/

    Un'altra opzione sarebbe MapServer: http://mapserver.org/

    Controlla il confronto: http://www.slideshare.net/novum.limitis/mapserver-vs-geoserver

  2. Lato client: scripting di pagine Web. Preferibilmente gli Openlayer possono iniziare con tanti esempi e anche facili da implementare. Controlla: http://openlayers.org/ Esempi: http://openlayers.org/dev/examples/

  3. Dati spaziali: puoi utilizzare le mappe di Google / Yahoo / Bing in base ai loro termini e condizioni e licenza. Oppure OpenStreet Maps che puoi pubblicare in GeoServer e utilizzarlo. Mappa di OpenStreet: http://www.openstreetmap.org/ I file delle forme di OpenStreet Map possono essere scaricati tramite: http://wiki.openstreetmap.org/wiki/Shapefiles

Se stai per utilizzare le mappe di Google / Yahoo / Bing, puoi utilizzare le loro API o OpenLayer per utilizzarlo e GeoServer e i dati spaziali non sono necessari. Anche se viene posta una domanda per una buona API per la mappa web, la piattaforma di mappatura e il riferimento ai dati spaziali sono riportati sopra in aggiunta per pensare alla piattaforma di mappatura completamente open source.


Kinda quello che ho detto, ma meglio mettere!
MerseyViking

3

Uso OpenLayers come parte della mia tesi di laurea UG e non posso criticare. Beh, posso, e sono stato sveglio fino a tarda notte a cercare di farlo comportare, ma è stata soprattutto l'ignoranza da parte mia quando ho cercato di mettere insieme un sito ottimizzato per i dispositivi mobili piuttosto che OL di per sé.

È facile aggiungere layer che provengono da un altro server tramite WMS; Ho MapServer in esecuzione che distribuisce i riquadri WMS e da OL uso solo:

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 effetti, è in grado di gestire server WFS e persino WFS-T e con livelli di mappe e foto OSM, Google o Bing, puoi avere un'app di mappatura web di bell'aspetto con un ingombro ridotto.




2

Super tardi alla festa, ma ho pensato di aggiungere un'altra opzione che avrebbe senso al giorno d'oggi.

Se non desideri ospitare un server ma desideri comunque trarre vantaggio dallo stile e dalla memorizzazione nella cache delle piastrelle molto veloce, perché non utilizzare Google Fusion Tables e Openlayer ? Dal blog di Allan Glenn

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

Puoi usare gdal per caricare le tabelle di fusione . In questo modo, non si paga il prezzo di analisi delle geometrie geojson sul lato client. Questo costo può variare da banale (per piccole quantità di funzioni) a significativo (per grandi quantità di funzioni). Renderà anche molto le tue geometrie


1

Sulla falsariga della risposta di @ Sean, ecco una domanda che ho posto lo scorso ottobre e la soluzione. Anch'io volevo qualcosa che potesse essere trasmesso. Per quanto riguarda la visualizzazione dei confini del distretto, Fusion Table potrebbe farlo?


1

CloudMade , Google Maps , Yahoo! Maps o Bing Maps . Alla fine, qualcuno verrà ad aiutarli con il loro sito Web e non avrà idea di OpenLayers o GeoJSON. Sarà molto più a prova di futuro utilizzare un'offerta commerciale ben nota. Sarà più facile per loro trovare qualcuno che sappia cosa fare con Google Maps e avrà un'interfaccia familiare. Ed è ancora gratuito per i siti pubblici.

Assicurati di ottenere loro la propria chiave API.


3
Questa domanda ha taggato "open-source", non il voto negativo perché hai tutto il diritto di suggerire una versione commerciale. Dico solo che con Google Maps dovrai aggiornare il tuo codice dopo 3 anni di privazione costringendoti a continuare a sviluppare la stessa APP più e più volte per ogni nuova versione di API di Google Maps. Una volta sviluppato con openlayer, puoi ospitare autonomamente la libreria per tutto il tempo che desideri. Non devi preoccuparti di nessuno che accende un interruttore che disattiverà il tuo servizio.
CaptDragon,

1
Non ho nulla contro l'open-source. Piuttosto il contrario. Potrei aver interpretato "open" liberamente (e non prendo i tag come restrittivi). Per il dominio problematico che sta affrontando, tuttavia, i suggerimenti per OpenLayers, MapServer, GeoServer, OpenStreetMap, ecc. Sono tecnicamente molto più complicati di quanto il 99,9% del personale non profit possa gestire da solo. Se vuole aiutare l'organizzazione, dovrebbe dare loro qualcosa che possono sistemare o trovare facilmente qualcuno da sistemare quando non c'è più. Il numero di persone con Google Maps nel loro set di competenze è significativamente più alto e non richiederebbe alcun accesso al server organizzativo.
Sean,

1
Sì, non ho idea del perché le persone stiano votando a favore delle risposte che suggeriscono GeoServer e MapServer quando il richiedente dice specificamente che non può ospitare alcun servizio di mappe. : P
CaptDragon,

@capdragon: nelle risposte è stato chiaramente indicato che GeoServer / MapServer e i dati spaziali sono opzionali. Può andare avanti con Openlayers senza di loro. Nessun danno per fornire informazioni aggiuntive di vantaggio nella risposta all'utente per conoscerli ...
Senthil

@Senthil: leggilo di nuovo, e cito: "questa organizzazione non ha / non avrà un server impostato per ospitare i livelli di questa mappa". Opzionale non è nemmeno una parola nella domanda.
CaptDragon,

1

Probabilmente vale la pena dare un'occhiata a CartoDB:

http://cartodb.com/

è un servizio di mappatura web semplice e gratuito che ti consente di caricare e modificare facilmente i dati geografici. Non sono sicuro che abbiano un'opzione per rendere una mappa "privata".

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.