2013-06-09 43 views
6

Tôi đang cố gắng để thiết lập một bản đồ clustered trên mapbox, như http://leaflet.github.io/Leaflet.markercluster/example/marker-clustering-realworld.388.htmldấu Clustering trên mapbox/tờ rơi

Nhưng tấm gương của họ sử dụng một tập tin .js đồng bằng như dữ liệu http://www.mapbox.com/mapbox.js/assets/realworld.388.js

Và điều duy nhất tôi có thể lấy từ hộp bản đồ là .geojson http://api.tiles.mapbox.com/v3/thebteam.map-w9jzcznw/markers.geojson

Có cách nào tôi có thể chuyển đổi geojson thành js (thường xuyên) không? Hoặc xuất một mảng javascript từ mapbox?

EDIT: đã kết thúc chuyển dữ liệu của tôi sang CSV và tìm trình phân tích cú pháp. Dưới đây là đoạn code mà làm việc, nếu có ai cần nó:

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

Tại sao không jsut viết một vòng lặp để thực hiện làm việc cho bạn? –

+0

Kỹ năng JS của tôi không tuyệt vời như vậy. – Erica

+0

Đã kết thúc chuyển dữ liệu của tôi sang CSV và tìm trình phân tích cú pháp. – Erica

Trả lời

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

Điều này là thông minh. Tôi đã chuyển dữ liệu của mình sang CSV, nhưng có vẻ như nó sẽ làm điều tương tự như tôi đã thử. – Erica

9

Tạo một layer GeoJSON và sau đó thêm lớp đó để 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

"dataFromMapbox" là gì và nó trông như thế nào? – parkr

+0

dataFromMapbox là geoJson chính nó, xin lỗi nếu nó không rõ ràng tôi sao chép các fragmen của mã của riêng tôi. Tôi đã chỉnh sửa mã để nó dễ đọc hơn –

+1

Cảm ơn, bro nó làm việc cho tôi. –

Các vấn đề liên quan