我正在尝试在我的谷歌地图上实现一个“负”叠加层,类似于estately.com上的效果。基本上,我已经成功地从我收集的KML数据中绘制出了映射多边形。当有多个路径时,它们可以很好地绘制出来。
所以,模仿我拥有的示例,首先我从polygonCoords(它是一个包含LatLng对象数组的数组)创建一组polyLines来围绕我的区域:
所以,我将这个负空间多边形推入我的polygonCoords数组中,并尝试绘制该多边形:
基本上,我希望发生的事情是:我的初始 polyLines 将会在负空间多边形中“打洞”,这样就没有覆盖我的城市边界的重叠部分了。如果您去 estately.com,并搜索“Paradise Valley, AZ”,您就可以看到效果。
我已经尝试了几种变化(多边形 vs PolyLines、不同的填充颜色和不透明度等),但没有一种达到了示例所显示的效果。
有什么想法吗?顺便说一下,我正在使用 v3 API。
谢谢, Andy
所以,模仿我拥有的示例,首先我从polygonCoords(它是一个包含LatLng对象数组的数组)创建一组polyLines来围绕我的区域:
for (var d = 0 ; d < polygonCoords.length ; d++)
{
var b = new google.maps.Polyline( {
path: polygonCoords[d],
strokeWeight: 4,
strokeColor: "#4F6D8F",
strokeOpacity: 1,
map: map
});
}
我有一个由“负空间”多边形定义的图形:
function negativeSpaceBoundary()
{
return [new google.maps.LatLng(10, -170),
new google.maps.LatLng(10, -50),
new google.maps.LatLng(80, -50),
new google.maps.LatLng(80, -170),
new google.maps.LatLng(10, -170)]
};
所以,我将这个负空间多边形推入我的polygonCoords数组中,并尝试绘制该多边形:
negativeSpace = new google.maps.Polygon( {
path: polygonCoords,
strokeWeight: 0,
strokeOpacity: 1,
strokeColor: "#4F6D8F",
fillColor: "#000000",
fillOpacity: 0.2,
clickable: false,
map: map
});
基本上,我希望发生的事情是:我的初始 polyLines 将会在负空间多边形中“打洞”,这样就没有覆盖我的城市边界的重叠部分了。如果您去 estately.com,并搜索“Paradise Valley, AZ”,您就可以看到效果。
我已经尝试了几种变化(多边形 vs PolyLines、不同的填充颜色和不透明度等),但没有一种达到了示例所显示的效果。
有什么想法吗?顺便说一下,我正在使用 v3 API。
谢谢, Andy
[ [surround: (10, -170),(80, -170),(80, -50),(10, -50),(10, -170)] [boundary: (28.646438, 80.84433100000001), (28.642874, 80.84357699999998), (28.642874, 80.84317699999997) ...] ]
我想我明白了你所说的“缠绕方向需要相反”-我尝试了反转外部孔坐标方向,但没有成功...感谢您的建议,我会继续探索。 - Andy Wallace0::Convex? 1, Wind: 16800 1::Convex? -1, Wind: -0.012936066837028193 2::Convex? -1, Wind: -0.012936066837028193 3::Convex? -1, Wind: -0.012936066837028193 4::Convex? -1, Wind: -0.012936066837028193
我将在接下来的信息中发布包含坐标集的文件的访问权限。 - Andy Wallace