Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.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_Events_Polyline - Fatal编程技术网

Javascript 谷歌地图:可点击多段线图标

Javascript 谷歌地图:可点击多段线图标,javascript,google-maps,events,polyline,Javascript,Google Maps,Events,Polyline,我有两个标记,用一条多段线连接这两个标记。 我在标记和多段线上有单击事件,但我试图使多段线更易于单击,而无需放置新标记或增加其笔划权重。 因此,我创建了一个圆形图标并放置在多段线上,但我无法使其可单击。可能吗 看到了这个帖子,但没有给出图标如何点击的任何细节。我搜索了它的源代码,但他添加了一个KML层。我不想那样做。 搜索了google maps overlay API,但没有找到任何用于侦听单击事件的界面。 我还尝试附加一个事件侦听器,但没有成功。我怀疑如果不添加实际的标记或对象,就无法完

我有两个标记,用一条多段线连接这两个标记。 我在标记和多段线上有单击事件,但我试图使多段线更易于单击,而无需放置新标记或增加其笔划权重。 因此,我创建了一个圆形图标并放置在多段线上,但我无法使其可单击。可能吗

看到了这个帖子,但没有给出图标如何点击的任何细节。我搜索了它的源代码,但他添加了一个KML层。我不想那样做。

搜索了google maps overlay API,但没有找到任何用于侦听单击事件的界面。

我还尝试附加一个事件侦听器,但没有成功。我怀疑如果不添加实际的标记或对象,就无法完成此操作,但如果其他人有类似问题,我将非常感谢任何提示:)

提前谢谢

我的代码:

var pathSymbol = {
    path: google.maps.SymbolPath.CIRCLE,
    scale: 8,
    strokeColor: '#228B22'
};

var conPath = new google.maps.Polyline({
    path: conCoord,
        strokeColor: "#228B22",
        strokeOpacity: 0.7,
        icons: [{
            icon: pathSymbol,
            offset: '50%'
        }],
        strokeWeight: 2
});

conPath.setMap(map);


google.maps.event.addListener(conPath, 'click', (function(l,conCoord) {
    return function() {
            infowindowPath.setContent("<b>Ligação "+connections[l].id);
        infowindowPath.setPosition(new google.maps.LatLngBounds(conCoord[1], conCoord[0]).getCenter());
            infowindowPath.open(map);
        }
})(l,conCoord));
var路径符号={
路径:google.maps.SymbolPath.CIRCLE,
比例:8,
strokeColor:“#228B22”
};
var conPath=new google.maps.Polyline({
路径:康科德,
strokeColor:#228B22“,
笔划不透明度:0.7,
图标:[{
图标:路径符号,
抵销:“50%”
}],
冲程重量:2
});
setMap(map);
google.maps.event.addListener(conPath,'click',(函数(l,concord){
返回函数(){
setContent(“Ligação”+connections[l].id);
infowindowPath.setPosition(新的google.maps.LatLngBounds(conCoord[1],conCoord[0]).getCenter());
infowindowPath.open(地图);
}
})(l,conCoord));

我也需要这个功能,但不幸的是这是不可能的-我几乎肯定(请参阅我的)。我这样说是因为:

  • 我尝试了许多不同的方法,但只有多段线接收事件
  • 谷歌的文档中没有明确记录这一点
  • 本文件以下部分的含义:

    从:

    符号是基于向量的图像,可以显示在标记多段线对象上

    从:

    addListener(实例:对象,事件名称:字符串,处理程序:函数) 将给定的侦听器函数添加到给定对象实例的给定事件名称中。返回此侦听器的标识符,该标识符可与removeListener()一起使用

  • 事件可以附加到对象实例(例如标记或多段线)。由于符号是在多段线上渲染的基于向量的图像,因此它们包含在多段线上,而不是正式的对象实例。显然,这使他们没有资格将事件附加到自己身上

    现在,我仍然怀疑的是,我上面的rational暗示符号是多段线的一部分,这意味着它还应该接收附加到多段线的相同事件。但是,在我的试验中,情况并非如此(:无论多段线上符号的大小,它都不会接收任何事件):

    var mySymbol={
    路径:google.maps.SymbolPath.CIRCLE,
    比例:25,
    冲程重量:5,
    填充不透明度:.2
    };
    var myPolyline=new google.maps.Polyline({
    图标:[{
    图标:mySymbol,
    固定旋转:对,
    抵销:50%,
    }],
    路径:[多段线中心,多段线端点],
    strokeColor:'黑色',
    频闪不透明度:1,
    冲程重量:5,
    地图:myMap
    });
    //因为是对象的实例,所以可以工作
    google.maps.event.addListener(myPolyline,'click',function(){
    警报('单击多段线!');
    });
    //不起作用:-(因为是对象文字)
    google.maps.event.addListener(mySymbol,'click',function(){
    警报('Symbol clicked!');
    });
    
    是的,这也是我得出的结论,我最终放弃了。谢谢你的回答。6年后情况还是一样吗!。有人能证实吗? addListener(instance:Object, eventName:string, handler:Function)