我有两个带有折线的标记连接两者。 我在标记和折线上点击了事件,但我试图让折线更容易点击而不放置新标记或增加它的strokeWeight。 所以我创建了一个圆形图标并放在折线上,但我无法使其可点击。可能吗?
看到这个帖子,但没有提供有关图标可点击方式的任何细节。我搜索了它的代码源,但他添加了一个KML图层。我不想那样做。 Google Maps: Attaching events on polyline icons
搜索了谷歌地图覆盖API,但没有找到任何界面来收听点击事件。 https://developers.google.com/maps/documentation/javascript/overlays#Polylines
我还试图附加一个事件监听器但是没有用。我怀疑如果不添加实际的标记或对象就无法完成,但如果其他人有类似的问题,我将不胜感激任何提示:)
提前致谢!
我的代码:
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));
答案 0 :(得分:5)
我也需要这个功能,但不幸的是它不可能 - 我几乎是正面的(见我的demo)。我这么说的原因是因为:
文档的以下部分暗示:
符号是基于矢量的图像,可以在标记或折线对象上显示。
来自documenation on the AddEventListener:
addListener(instance:Object, eventName:string, handler:Function)
将给定的侦听器函数添加到给定对象实例的给定事件名称。返回此侦听器的标识符,该标识符可与removeListener()一起使用。
事件可以附加到对象实例 (例如标记或折线)。由于符号是基于矢量的图像,它们在
现在,我仍然怀疑的是,我的理性上述意味着符号是折线的一部分,这意味着它也应该接收附加到折线的相同事件。但是,在我的试验中,情况并非如此(demo here:无论折线上符号的大小如何,它都不会收到任何事件):
var mySymbol = {
path: google.maps.SymbolPath.CIRCLE,
scale: 25,
strokeWeight: 5,
fillOpacity: .2
};
var myPolyline = new google.maps.Polyline({
icons: [{
icon: mySymbol,
fixedRotation: true,
offset: '50%',
}],
path: [polylineCenter, polylineEnd],
strokeColor: 'black',
strokeOpacity: 1,
strokeWeight: 5,
map: myMap
});
// works since <myPolyline> is an instance of an Object
google.maps.event.addListener(myPolyline, 'click', function() {
alert('Polyline clicked!');
});
// doesn't work :-( since <mySymbol> is an Object literal
google.maps.event.addListener(mySymbol, 'click', function() {
alert('Symbol clicked!');
});