【发布时间】:2014-07-26 16:17:25
【问题描述】:
我必须允许用户输入多个邮政编码,从数据库中检索纬度和经度,然后构建一个包含它们的巨大多边形。
我正在使用 Java 编码并使用 Google Maps API V3。构建单个邮政编码没有问题。但是在添加更多邮政编码后,生成的折线会变得混乱并扭曲多边形,如下图所示。
我需要在我的代码中进行哪些更改才能将所有这些较小的多边形变成一个较大的多边形?我已经在谷歌上搜索了答案,我所设法遇到的只是单独构建每个邮政编码的多边形,但这仍然不会给我一个更大的单个多边形的最终结果。
目前,在输入邮政编码后,程序会从数据库中收集经纬度点,并将它们输入到一个巨大的数组数组中(准确地说是一个 String[][]),然后将其传递给 html和 javascript 生成生成的多边形。
我的 javascript 与 GoogleMaps API V3 简单多边形示例高度相似:
function clearHello(coords1){
coords = coords1
var triangleCoords = new Array();
var l = coords.length;
for (var x = 0; x < l; x++){
triangleCoords[x] = new google.maps.LatLng( coords[x][0], coords[x][1]);
}
// Construct the polygon.
bermudaTriangle = new google.maps.Polygon({
paths: triangleCoords,
strokeColor: '#FF0000',
strokeOpacity: 0.8,
strokeWeight: 2,
fillColor: '#FF0000',
fillOpacity: 0.35
});
bermudaTriangle.setMap(document.map);
建议?有没有一种代码技术可以获取我的巨型数组,然后删除似乎是造成这种失真的内部点?
编辑:想知道一种不同的方法,有没有人知道一种方法来删除创建奇异梯形事物的内部线,以便邮政编码多边形可以正确填充?我知道我可以使它们透明,但这并不能阻止多边形的变形。此外,将其简单地管理为我填充的几个多边形是行不通的,因为该程序一次需要能够处理多达 200 个邮政编码的坐标。
【问题讨论】:
-
我终于弄明白了,并彻底检查了我的答案,以演示如何使用两个不同的第三方 JS 库在 Google Maps 上下文中执行 Dissolve。我认为在浏览器应用程序中进行这样的大型分析操作有点讨厌,如果您预计会进行大量地理查询和操作,我仍然建议您使用 PostGREsql/PostGIS,但这肯定可以使用首选技术实现您的目标.
标签: javascript google-maps-api-3 java-8