是否可以平滑多邊形的線條/邊緣?它目前非常尖銳和有角度,如果這些角度實際上對他們有曲率,那將是非常好的。有任何想法嗎?Google Maps API V3 - 多邊形SMOOTHED邊緣
2
A
回答
0
向您的多邊形中添加其他點。繪製的點越多,曲線越平緩。
+0
但是,您必須手動將每個添加的點拖動到新的位置。最好使用一些算法(如果Maps API內置一個算法,會更好)。 – Fraggle 2012-04-10 23:39:10
0
這是基於B樣條平滑算法,通過https://johan.karlsteen.com/2011/07/30/improving-google-maps-polygons-with-b-splines/
public List<LatLng> bspline(List<LatLng> poly) {
if (poly.get(0).latitude != poly.get(poly.size()-1).latitude || poly.get(0).longitude != poly.get(poly.size()-1).longitude){
poly.add(new LatLng(poly.get(0).latitude,poly.get(0).longitude));
}
else{
poly.remove(poly.size()-1);
}
poly.add(0,new LatLng(poly.get(poly.size()-1).latitude,poly.get(poly.size()-1).longitude));
poly.add(new LatLng(poly.get(1).latitude,poly.get(1).longitude));
Double[] lats = new Double[poly.size()];
Double[] lons = new Double[poly.size()];
for (int i=0;i<poly.size();i++){
lats[i] = poly.get(i).latitude;
lons[i] = poly.get(i).longitude;
}
double ax, ay, bx, by, cx, cy, dx, dy, lat, lon;
float t;
int i;
List<LatLng> points = new ArrayList<>();
// For every point
for (i = 2; i < lats.length - 2; i++) {
for (t = 0; t < 1; t += 0.2) {
ax = (-lats[i - 2] + 3 * lats[i - 1] - 3 * lats[i] + lats[i + 1])/6;
ay = (-lons[i - 2] + 3 * lons[i - 1] - 3 * lons[i] + lons[i + 1])/6;
bx = (lats[i - 2] - 2 * lats[i - 1] + lats[i])/2;
by = (lons[i - 2] - 2 * lons[i - 1] + lons[i])/2;
cx = (-lats[i - 2] + lats[i])/2;
cy = (-lons[i - 2] + lons[i])/2;
dx = (lats[i - 2] + 4 * lats[i - 1] + lats[i])/6;
dy = (lons[i - 2] + 4 * lons[i - 1] + lons[i])/6;
lat = ax * Math.pow(t + 0.1, 3) + bx * Math.pow(t + 0.1, 2) + cx * (t + 0.1) + dx;
lon = ay * Math.pow(t + 0.1, 3) + by * Math.pow(t + 0.1, 2) + cy * (t + 0.1) + dy;
points.add(new LatLng(lat, lon));
}
}
return points;
}
相關問題
- 1. Google Maps API v3多邊形關閉
- 2. 多邊形中心Google Maps JavaScript API v3
- 3. Google Maps V3多邊形繪圖
- 4. Google Maps V3:多邊形頂點
- 5. Google Maps API多邊形與Trulia.com多邊形對比
- 6. CartoDb + Google Maps多邊形
- 7. Google Maps API V3 - 通過採用InfoBox標籤Fusion Tables多邊形
- 8. Google Maps V3 API如何管理多邊形的Z-Index?
- 9. 從Google Maps JavaScript API V2遷移到V3,編碼的多邊形?
- 10. Google Maps API v3&融合圖層:多邊形不透明
- 11. Google Maps API 3 Javascript添加多邊形
- 12. 使用Google Maps API合併多邊形
- 13. 帶有多邊形的Google Maps API
- 14. Google Map API V3多邊形DragEnd事件
- 15. Google maps API 3,關閉多邊形(與「Google地圖多邊形」相同)
- 16. 使用Google Maps v3拖動(移動)多邊形
- 17. Google Maps JavaScript API v3可編輯多邊形,防止複雜多邊形(相交多義線)
- 18. 如何在Google Maps v3上添加和刪除多邊形?
- 19. kml + google maps api v3 + geoxml3
- 20. 將MySQL中的WKT多邊形轉換爲Google Maps多邊形
- 21. 從XML文件在Google Maps API V3上繪製多個多邊形
- 22. Google Maps V3使用XML數據從縣名創建多邊形
- 23. 在Google Maps V3中將MapLabel放置在多邊形頂部
- 24. 如何刪除多邊形座標/頂點/節點(Google Maps V3)
- 25. Google MAPS API中的多個多邊形和多個標記
- 26. 如何在Google Maps v3 API中禁用交叉圓/多邊形的Alpha合併?
- 27. Google Maps API v3我的地圖不以kml多邊形爲中心
- 28. 在Google Maps API v3中使用單個刪除按鈕繪製圓/多邊形
- 29. 如何將Adobe Illustrator路徑轉換爲Google Maps多邊形? (v3 API)
- 30. Google Maps Api V3:如何將標記綁定到多邊形的頂點?
啓發我需要這也因此讓我知道如果你找到了一個好辦法做到這一點,我的工作在Android上。我假設你必須將一組點(被映射的多邊形的頂點)傳遞給一個曲線平滑/擬合算法,然後這個算法會生成一組新的點(比最初可能出現的更多),這些點可以顯示在地圖。 – Fraggle 2012-04-10 23:38:10