Javascript 板条在多边形内吗
我在谷歌地图上设置了一个典型的多边形,带有一些latLng:Javascript 板条在多边形内吗,javascript,google-maps-api-3,Javascript,Google Maps Api 3,我在谷歌地图上设置了一个典型的多边形,带有一些latLng: var bermudaTriangle = new google.maps.Polygon({ paths: [ new google.maps.LatLng(25.774252, -80.190262), new google.maps.LatLng(18.466465, -66.118292), new google.maps.LatLng(32.321384, -64.75737), ] });
var bermudaTriangle = new google.maps.Polygon({
paths: [
new google.maps.LatLng(25.774252, -80.190262),
new google.maps.LatLng(18.466465, -66.118292),
new google.maps.LatLng(32.321384, -64.75737),
]
});
bermudaTriangle.setMap(map);
这些是谷歌文档中的百慕大三角坐标。我还有一些随机坐标,Saay:
var coord1 = new new google.maps.LatLng(26.194876675795218,-69.8291015625)
var coord2 = new new google.maps.LatLng(33.194876675795218,-63.8291015625)
第一个正好在三角形内,第二个在三角形外。不过,这些只是示例,我需要的是一种方法来确定提供的坐标(不只是这两个坐标中的一个,任何坐标)是否在多边形的内部或外部(也不总是百慕大三角形,甚至不是三角形-多边形可以有任意数量的板条)。我查阅了GoogleMapsAPI文档,但找不到任何提供
这个问题的答案。如果谷歌地图API没有任何专门用于此的方法,那么您需要找到或编写自己的方法。这是计算机图形学中的一个常见问题,如果你在谷歌上搜索“多边形命中测试”,你会发现大量信息。看起来相当全面。看看维基百科。有两种方法可以确定点是否在多边形内。其中之一是光线投射算法。有一些关于如何在谷歌地图中实现的示例。使用该方法 ContainesLocation(点:板条,多边形:多边形)布尔值计算给定点是否位于指定多边形内 代码片段:
函数checkInPolygon(标记,多边形){
var infowindow=new google.maps.infowindow();
var html=“”;
if(google.maps.geometry.poly.containsLocation(marker.getPosition(),polygon)){
html=“内部多边形”;
}否则{
html=“外部多边形”;
}
setContent(html);
信息窗口。打开(地图、标记);
}
var映射;
var coord1=new google.maps.LatLng(26.194876675795218,-69.8291015625);
var coord2=new google.maps.LatLng(33.194876675795218,-63.8291015625);
函数初始化(){
var map=new google.maps.map(
document.getElementById(“地图画布”){
中心:新google.maps.LatLng(37.4419,-122.1419),
缩放:13,
mapTypeId:google.maps.mapTypeId.ROADMAP
});
百慕大陆角。设定图(map);
var bounds=new google.maps.LatLngBounds();
对于(var i=0;i
html,
身体,
#地图画布{
身高:100%;
宽度:100%;
边际:0px;
填充:0px
}
在V3 API中有google.maps.geometry.poly.containsLocation静态方法
看
因此,您只需通过多边形和要检查其是否位于多边形内部的点