2016-11-15 38 views

回答

2

有幾種方法這一點,取決於你到底想要什麼。

最簡單的一個就是計算整個多邊形的質心。很多地理空間軟件能夠計算multipolygons的重心,與多個外環,多邊形等

如果您使用單張及GeoJSON的,我個人的選擇是使用Turf.js爲地理處理,如:

var poly1 = { 
    type: 'Feature', 
    geometry: { 
    type: 'Polygon', 
    coordinates: [[[10, 10], [10, 20], [20, 15]]] 
    } 
}; 

var poly2 = { 
    type: 'Feature', 
    geometry: { 
    type: 'Polygon', 
    coordinates: [[[10, 45], [20, 40], [20, 50]]] 
    } 
}; 

var featCollection = { 
    type: 'FeatureCollection', 
    features: [poly1, poly2] 
} 

L.geoJSON(featCollection).addTo(map) 

// Magic happens here: 
var centroid = turf.centroid(featCollection); 

L.geoJSON(centroid).addTo(map); 

您可以看到,作爲working example

現在,質心是的中心密度的多邊形。如果你還記得高中幾何,你會記得lots of centers for something as simple as a triangle,每個都有自己的屬性。

對於更復雜的多邊形,這是正確的:some times you don't want the centroid。如果考慮到測地線(即地球不是二維平面),事情變得更加複雜。

因此,根據你想要做什麼,你可能需要一個更詳細的解決方案,以便找到不是質心,而是一個點,它將與任何多邊形的距離最小化(理解爲距離任何該多邊形的頂點)。

+0

如何自動調整地圖的縮放級別以適合所有/大部分多邊形? – codejunkie

+1

獲取每個多邊形的邊界,並創建一個延伸到所有邊界的'L.Bounds'實例。閱讀宣傳單文件,它應該很簡單,你自己做。 – IvanSanchez

+0

http://stackoverflow.com/questions/16845614/zoom-to-fit-all-markers-in-mapbox-or-leaflet --->幫助我 – codejunkie