当我在其上有一个圆形覆盖时触发the_map dblclick事件时出现问题。
google.maps.event.addListener(the_map, 'dblclick', function(myEvent) {
// do something
}
我已将下面的代码添加到circle.polygon对象中,但它不起作用。
google.maps.event.addListener(this.polygon, 'dblclick', function(myEvent) {
$(this.map).trigger('dblclick', myEvent)
// or
$(this.map).dblclick(myEvent)
})
任何人都可以帮忙吗?或描述它为什么不起作用?
答案 0 :(得分:1)
我在寻找相同的答案时遇到过这篇文章。我找不到一个所以我正在为后代添加我的解决方案。
以下是一个自安装类,无论地图上是否存在叠加层,都会执行双击和单击。
map_click._single(function(event){
console.log(event);
});
相当于:
google.maps.event.addListener(map, 'click', function(event) {
console.log(event);
});
双击...
map_click._double(function(event){
console.log(event);
});
相当于:
google.maps.event.addListener(map, 'dblclick', function(event) {
console.log(event);
});
如果要设置双击延迟,可以编辑它:
map_click.delay = 300;
默认值为300毫秒,这是我发现效果最好的。您可以通过将map_click.delay
设置为0来有效删除双击事件。
最后功能:
window.map_click = {
i : 0
,_single : function(fn){
if(typeof(fn) != 'function') return;
this.singles = this.singles || [];
this.singles.push(fn);
}
,_double : function(fn){
if(typeof(fn) != 'function') return;
this.doubles = this.doubles || [];
this.doubles.push(fn);
}
,delay : 300
,_ : (function(){
google.maps.event.addListener(map, 'dblclick', function(event) {
if(map_click.timeout) clearTimeout(map_click.timeout);
map_click.i = 0;
for(_ in map_click.doubles)
map_click.doubles[_](event);
});
google.maps.event.addListener(map, 'click', function(event) {
map_click.i++;
map_click._event = event;
if(map_click.timeout) clearTimeout(map_click.timeout);
if(!(map_click.i%2)){
map_click.i = 0;
for(_ in map_click.doubles)
map_click.doubles[_](event);
}else{
map_click.timeout = setTimeout(function(){
map_click.i = 0;
for(_ in map_click.singles)
map_click.singles[_](map_click._event);
}, map_click.delay);
}
});
})()
};
答案 1 :(得分:0)
根据dblclick事件的Google Map API:
在地图上双击完成后会触发此事件。 <强>通知 如果双击是在标记上,则不会触发此事件 或其他可点击的叠加。点的地理坐标 双击的是在latlng参数中传递的。叠加层 参数始终设置为null。
注意:强>
上面的链接和摘要是针对v2文档的,但同样适用于v3 here;如果向下滚动到dblclick
事件:
单击MouseEvent当用户单击地图时会触发此事件 (但不是当他们点击标记或信息窗口时)。
dblclick MouseEvent当用户双击时会触发此事件 地图。 请注意,点击事件也会在此之前触发 之一。强>
答案 2 :(得分:0)
只需将圈子可点击选项设置为false。