Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 板条在多边形内吗_Javascript_Google Maps Api 3 - Fatal编程技术网

Javascript 板条在多边形内吗

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), ] });

我在谷歌地图上设置了一个典型的多边形,带有一些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),
  ]
});
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静态方法

因此,您只需通过多边形和要检查其是否位于多边形内部的点