0
我有一個三層的地理層:村>縣>地區。Leaflet,Topojson和圖層組
我的topojson由村莊的多邊形組成,我有一個包含村莊>縣>區域數據的json。
我加載這樣說:
L.TopoJSON = L.GeoJSON.extend({
addData: function(jsonData) {
if (jsonData.type === "Topology") {
for (key in jsonData.objects) {
geojson = topojson.feature(jsonData, jsonData.objects[key]);
L.GeoJSON.prototype.addData.call(this, geojson);
}
}
else {
L.GeoJSON.prototype.addData.call(this, jsonData);
}
}
});
var topoLayer = new L.TopoJSON();
var village = {};
$.getJSON('data/villages_data.json', function(data) {
village = data;
$.getJSON('data/villages_geo.json').done(addTopoData);
});
function addTopoData(topoData){
topoLayer.addData(topoData);
topoLayer.addTo(map);
topoLayer.eachLayer(handleLayer);
}
我想在地圖上顯示的三個層次:村,縣,區。我之前設法使用了layergroup,並且我正在考慮使用它來添加一個控件來切換每個管理級別。 我也想對每個管理級別進行不同的樣式設計。
我本來希望直接在地圖上做。否則我看到的唯一解決方案是製作三個shapefile,每個管理級別一個,然後爲這三個層創建一個topojson。那麼我猜想訪問每個管理員級別會更容易;雖然我甚至不確定我會處理它。
有什麼建議嗎?
只是爲了記錄:'style'選項可以直接作爲一個對象。 'L.geoJson'會將它轉換成一個總是返回該對象的函數。 – ghybs
感謝您澄清並發現突出顯示錯誤,未正確自動檢測並監督它。至於工廠方法,我總是在我的所有代碼/示例中使用'new'關鍵字的正常方式,所以我改回了它。這不是我第一次幫助那些在instanciating有問題的人,當他們認爲工廠存在的時候不存在的時候(比如一些插件等) – iH8
當然,Leaflet足夠好,構造函數和工廠是等同的。但不是一些插件,如你所說... – ghybs