2015-09-04 22 views
1

我跟着這篇教程在這裏http://leafletjs.com/examples/choropleth.html使用GEOJSON格式的狀態做一個狀態級別的等值線。Choropleth傳單ajax

Leaflet GeoJSON允許我們發送AJAX請求來獲取外部參數。像這樣的東西

$.ajax({ 
    dataType: 'json', 
    url: 'atl_metro.geojson', 
    success: function(data) { 
     $(data.features).each(function(key, data) { 

      var zips = L.geoJson(data,{ 
       onEachFeature: onEachFeature, 
       style: style 
      }).addTo(map); 

     }); 
    } 
}).error(function() {}); 

有沒有辦法使用它使用TopJSON?

+0

編輯完你的問題,我的回答讓完全沒有意義了這樣的方式。 :D你誤解了很多東西,我不知道從哪裏開始。我會先回答你的其他問題,也許事情會變得更清晰。 – iH8

+0

我很抱歉,我將恢復編輯,以便您的答案再次有意義! :) – user2961712

回答

1

爲什麼不使用普通香草TopoJSON並丟棄omnivore插件。它只是一個包裝,而另一個依賴則不需要,因爲TopoJSON本身使用起來非常簡單。

var url = 'https://rawgit.com/mbostock/topojson/master/examples/us-10m.json'; 

// Fetch topojson file via jQuery 
$.getJSON(url, function(data) { 
    // Convert the topojson to geojson 
    var geojsonData = topojson.feature(data, data.objects.counties); 
    // Create new geojsonlayer with the data 
    var geojsonLayer = new L.GeoJSON(geojsonData, { 
    style: getStyle, 
    }).addTo(map); 
}); 

function getStyle(feature) { 
    return { 
    weight: 1, 
    opacity: 1, 
    color: '#fff', 
    fillOpacity: 0.7, 
    // fillColor: getColor(feature.properties.density) 
    // TopoJSON used in this example doesn't have any data attributes 
    // so throwing in some random colors 
    fillColor: '#'+Math.floor(Math.random()*16777215).toString(16) 
    }; 
} 

這裏有Plunker工作示例:http://plnkr.co/edit/5Kn94H?p=preview

+0

也許你可以編輯你的問題,並制定一個更好的問題。我不確定你真正想要完成什麼。這些是額外的問題,這不是什麼意見。 – iH8

+0

你完全錯了。您不能使用TopoJSON或GeoJSON來製作AJAX/XHR請求。 '$ .ajax'和'$ .getJSON'方法來自您正在使用的jQuery庫。 mouseevents與Topo或GeoJSON無關。這些事件是Leaflet的一部分。如果您使用TopoJSON,將其轉換爲GeoJSON或使用普通的vanilla GeoJSON,則一旦將GeoJSON數據加載到Leaflet的GeoJSON圖層中,該層就負責這些事件。 – iH8

+0

是的,謝謝你我已經找到了這個問題。我已經實現並獲得了縮放和其他功能! 剩下的唯一的東西是,topojson.featuure在轉換爲Geojson時保留TopoJson文件的屬性嗎?我已經在其他問題上評論過這一點。感謝您的幫助! – user2961712