2013-06-09 7 views
6

Sto cercando di creare una mappa cluster in mapbox, come http://leaflet.github.io/Leaflet.markercluster/example/marker-clustering-realworld.388.htmlmarcatori di clustering su mapbox/leaflet

Ma il loro esempio viene utilizzato un file js pianura come dati http://www.mapbox.com/mapbox.js/assets/realworld.388.js

E l'unica cosa che può arrivare da mapbox is .geojson http://api.tiles.mapbox.com/v3/thebteam.map-w9jzcznw/markers.geojson

C'è un modo per convertire il geojson in js (su base regolare)? Oppure esportare un array javascript da mapbox?

EDIT: ho finito per passare i miei dati a CSV e trovare un parser. Ecco il codice che ha funzionato, se qualcuno ha bisogno:

var url = 'https://docs.google.com/spreadsheet/pub?key=abc123'; 

$.get(url, function(data) { 
    var addressPoints = $.csv.toArrays(data); 
    var map = L.mapbox.map('map', 'map-abc123').setView([20.30, 18.98], 2); 
    var markers = new L.MarkerClusterGroup({ showCoverageOnHover: false }); 

    for (var i = 0; i < addressPoints.length; i++) { 
    var a = addressPoints[i]; 
    var title = a[2]; 
    var marker = L.marker(new L.LatLng(a[0], a[1]), { 
     icon: L.mapbox.marker.icon({'marker-size': 'small', 'marker-color': 'e8168c'}), 
     title: title 
    }); 
    marker.bindPopup(title); 
    markers.addLayer(marker); 
    } 

    map.addLayer(markers); 

}); 
+0

Perché non sono finite scrivere un ciclo per fare il Lavoro per te? –

+0

Le mie abilità JS non sono così grandi. – Erica

+0

Terminato il passaggio dei miei dati a CSV e la ricerca di un parser. – Erica

risposta

2
var geojson = dataFromMapbox; 
var lat; 
var lng; 
for(var i= 0;i<geojson.features.length;i++) 
    { 
    lat = geojson.features[i].geometry.coordinates[0]; 
    lng = geojson.features[i].geometry.coordinates[1]; 

    //create a marker with those values, pass it to a MarkerCluster object 

    } 
+0

Questo è intelligente. Ho finito per passare i miei dati a CSV, ma sembra che farebbe la stessa cosa che ho provato. – Erica

9

creare un livello GeoJSON e quindi aggiungere quello strato di MarkerCluster:

var markers = new L.MarkerClusterGroup(); 
var geoJsonFeature = = { 
    "type": "Feature", 
    "properties": { 
    "name": "Coors Field", 
    "amenity": "Baseball Stadium", 
    "popupContent": "This is where the Rockies play!" 
    }, 
    "geometry": { 
    "type": "Point", 
    "coordinates": [-104.99404, 39.75621] 
    } 
}; 
var geoJsonLayer = L.geoJson(geoJsonFeature); 

markers.addLayer(geoJsonLayer); 
map.addLayer(markers); 
+0

Che cos'è "dataFromMapbox" e che aspetto ha? – parkr

+0

dataFromMapbox è lo stesso geoJson, scusa se non era chiaro ho copiato i frammenti del mio codice. Ho modificato il codice in modo che sia più leggibile –

+1

Grazie, mi sta lavorando. –