2015-09-09 60 views
2

我正在使用傳單作爲基礎層和d3 topojson文件的timelapsed填充地圖,以便我可以在某些國家/地區使用顏色。我用http://bost.ocks.org/mike/leaflet/開始,一切都很好,直到我試圖在俄羅斯聯邦陰影。它的陸塊橫跨非連續的方塊,當我嘗試向我的#RUS路徑添加填充樣式時,它的行爲異常。例如:http://dataviz.du.edu/projects/scratch/study_abroad.html 例如完整渲染需要1.5秒,它遮蔽了3個國家,俄羅斯聯邦陰影最後。d3 +傳單路徑填充問題

本示例使用了我在其他純粹的d3項目中使用過的topojson文件,並且在沒有此問題的情況下在這些上下文中填充了#RUS。

任何人都可以幫忙嗎?提前致謝。

回答

0

本示例使用了我在其他純粹的d3項目中使用過的topojson文件,並且在沒有此問題的情況下在這些上下文中填充了#RUS。

你必須誤會因爲你的TopoJSON文件實際上已損壞。請直接從服務器看到這個文件的示例:http://plnkr.co/edit/QOTwV3?p=preview請注意,我使用的是簡單的TopoJSON和Leaflet的GeoJSON圖層,但它產生了完全相同的結果。

PS。你有什麼理由爲什麼你使用D3?因爲我看到你在做什麼可以使用Leaflet和TopoJSON,沒有D3。這裏有一個簡單的例子:

function delay(features) { 
    var geojsonLayer = new L.GeoJSON(null, { 
    style: getStyle, 
    }).addTo(map); 
    var delay = 100; 
    features.forEach(function(feature) { 
    delay = delay + 100; 
    setTimeout(function() { 
     geojsonLayer.addData(feature); 
    }, delay); 
    }); 
} 

var url = 'http://crossorigin.me/http://dataviz.du.edu/projects/scratch/worldnew.json'; 

$.getJSON(url, function(data) { 
    var geojsonData = topojson.feature(data, data.objects.test); 
    delay(geojsonData.features); 
}); 
+0

謝謝。不,在這種情況下沒有充分的理由使用D3。我對d3比單張更熟悉,所以我很欣賞指針,我可以在沒有D3的情況下做到這一點。 –