是否可以平滑多边形的线条/边缘?它目前非常尖锐和有角度,如果这些角度实际上对他们有曲率,那将是非常好的。有任何想法吗?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 V3多边形绘图
- 2. Google Maps V3:多边形顶点
- 3. Google Maps API多边形与Trulia.com多边形对比
- 4. CartoDb + Google Maps多边形
- 5. Google Maps V3 API如何管理多边形的Z-Index?
- 6. Google Maps API V3 - 通过采用InfoBox标签Fusion Tables多边形
- 7. Google Maps API v3&融合图层:多边形不透明
- 8. Google Map API V3多边形DragEnd事件
- 9. 使用Google Maps v3拖动(移动)多边形
- 10. 如何在Google Maps v3上添加和删除多边形?
- 11. kml + google maps api v3 + geoxml3
- 12. 从XML文件在Google Maps API V3上绘制多个多边形
- 13. Google Maps V3使用XML数据从县名创建多边形
- 14. 在Google Maps V3中将MapLabel放置在多边形顶部
- 15. 如何删除多边形坐标/顶点/节点(Google Maps V3)
- 16. Google MAPS API中的多个多边形和多个标记
- 17. 在Google Maps API v3中使用单个删除按钮绘制圆/多边形
- 18. 在Google地图上绘制区域多边形v3 API
- 19. 如何使用Google-Maps-Api-3绘制多个多边形?
- 20. Google Maps API v3 - maxZoomService
- 21. 谷歌地图API V3的多边形
- 22. 缩放多边形,使边缘匹配
- 23. 向边缘缩放多边形?
- 24. Google Maps API v2 vs Google Maps API v3?
- 25. Google Maps API - 从geoJSON获取多边形的不透明度
- 26. Google Maps API,containslocation()哪个多边形是您的地址?
- 27. 在Google Maps API下方添加新的多边形
- 28. 在Google Maps Flash Api中添加多边形作为标记
- 29. Google Maps API |多边形GEOJSON图层,不会映射
- 30. Google Maps API绘图多边形与标记集合
启发我需要这也因此让我知道如果你找到了一个好办法做到这一点,我的工作在Android上。我假设你必须将一组点(被映射的多边形的顶点)传递给一个曲线平滑/拟合算法,然后这个算法会生成一组新的点(比最初可能出现的更多),这些点可以显示在地图。 – Fraggle 2012-04-10 23:38:10