Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.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 谷歌地图API V3信息窗口_Javascript_Google Maps Api 3 - Fatal编程技术网

Javascript 谷歌地图API V3信息窗口

Javascript 谷歌地图API V3信息窗口,javascript,google-maps-api-3,Javascript,Google Maps Api 3,在开发此解决方案时,我了解到API V2已被弃用。从那以后,我开始使用API V3开发一个版本。这项正在进行的工作可在以下网址找到。特别感谢David Marland为我加速了这一转变 我现在讨论剩下的3个问题,第一个问题我将在这篇文章中讨论 我无法触发我定义的信息窗口: google.maps.event.addListener(polyline, 'click', function(event) { if (polyline.Contains(event.latLng)) {

在开发此解决方案时,我了解到API V2已被弃用。从那以后,我开始使用API V3开发一个版本。这项正在进行的工作可在以下网址找到。特别感谢David Marland为我加速了这一转变

我现在讨论剩下的3个问题,第一个问题我将在这篇文章中讨论

我无法触发我定义的信息窗口:

 google.maps.event.addListener(polyline, 'click', function(event) {
    if (polyline.Contains(event.latLng)) {
        infowindowInside.open(map,polyline);
    } else {
        infowindowOutside.open(map,polyline);
    }
  });
我将它们附加到一个多边形上,而不是一个标记。多边形写为:

var path = [
new google.maps.LatLng(35.950079, -84.104977),
new google.maps.LatLng(35.950774, -84.049702),
new google.maps.LatLng(35.946883, -84.047813),
new google.maps.LatLng(35.945354, -84.045067),
new google.maps.LatLng(35.940907, -84.042149),
new google.maps.LatLng(35.930483, -84.037857),
new google.maps.LatLng(35.939656, -84.037857),
new google.maps.LatLng(35.928120, -84.076309),
new google.maps.LatLng(35.938822, -84.066868),
new google.maps.LatLng(35.950079, -84.104977)];
var polyline = new google.maps.Polygon({path:path, strokeColor: "#FF0000", strokeOpacity: 1.0, strokeWeight: 2, clickable:false});
polyline.setMap(map);
我很感激你能提供的任何指导

多谢各位

***更新******

我现在已将代码修改为:

google.maps.event.addListener(polyline, 'click', function(event) {
    if (polyline.ContainsLocation(event.latLng, polyline)) {
        window.alert('inside');//infowindowInside.open(map,polyline);
    } else {
        window.alert('outside');//infowindowOutside.open(map,polyline);
    }
  });

但是..仍然没有触发器。

可能是因为
Polygon
没有“contains”函数。您应该考虑使用Google Maps API,它有一个函数。

可能是因为
Polygon
没有“contains”函数。您应该考虑使用Google Maps API,它有一个函数。

Google Maps API v3不允许您将信息窗口添加到多段线或多边形。解决方法是获取鼠标单击的纬度/高度坐标,并将信息窗口(用户单击鼠标的位置)附加到地图上,如:

google.maps.event.addListener(polyline, 'click', function(event) {
 if (polyline.Contains(event.latLng)) {
    infowindowInside.open(map);
 } else {
    infowindowOutside.open(map);
 }
});
(注意.open()方法中没有第二个参数)

否则,您可以计算出多边形中心或其中一个角的纬度/高度,并将信息窗口附加到那里(但要附加到地图上)

这将允许您显示信息窗口,同时使其显示为与多边形相连


Edit:另外--正如mano marks所说的.Contains--我不确定该方法是否存在,因此即使从.open()方法中删除第二个参数,您的代码块也可能仍然无法工作。如果是这种情况,您可能需要采用不同的逻辑方法,但将标记附着到地图而不是多边形或多段线将解决您的主要问题。

Google maps api v3不允许您将信息窗口添加到多段线或多边形。解决方法是获取鼠标单击的纬度/高度坐标,并将信息窗口(用户单击鼠标的位置)附加到地图上,如:

google.maps.event.addListener(polyline, 'click', function(event) {
 if (polyline.Contains(event.latLng)) {
    infowindowInside.open(map);
 } else {
    infowindowOutside.open(map);
 }
});
(注意.open()方法中没有第二个参数)

否则,您可以计算出多边形中心或其中一个角的纬度/高度,并将信息窗口附加到那里(但要附加到地图上)

这将允许您显示信息窗口,同时使其显示为与多边形相连

Edit:另外--正如mano marks所说的.Contains--我不确定该方法是否存在,因此即使从.open()方法中删除第二个参数,您的代码块也可能仍然无法工作。如果是这样的话,您可能必须对逻辑采取不同的方法,但是将标记附着到地图而不是多边形或多段线将解决您的主要问题