angular - 如何有条件地以角度在谷歌地图上触发点击事件
问题描述
在我的代码中,我希望在我的谷歌地图上以角度在 click 和 dblclick 之间进行不同的操作。我想知道我该怎么做。我像这样注册我的听众
google.maps.event.addListener(polygon, 'click', (event) => {
console.log('We clicked the polygon');
console.log(polygon);
});
google.maps.event.addListener(polygon, 'dblclick', (event) => {
console.log('We double clicked the polygon');
console.log(polygon);
});
它工作正常,我唯一的问题是在触发 dblclick 事件之前,我们也会触发一次点击。所以我的问题是什么是最好的方法来延迟点击事件的触发 x 时间以等待可能的 dblclick 并且只有在我们没有触发 dblclick 时才触发?
解决方案
为单击事件设置超时(此处为 500 毫秒)并在双击时取消它。
function initialize() {
var myLatLng = new google.maps.LatLng(0, 0);
var mapOptions = {
zoom: 4,
center: myLatLng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);
let t;
google.maps.event.addListener(map, 'click', (event) => {
t = setTimeout(function() {
console.log('click');
}, 500);
});
google.maps.event.addListener(map, 'dblclick', (event) => {
console.log('double click');
clearTimeout(t);
});
}
#map-canvas {
height: 180px;
}
<div id="map-canvas"></div>
<!-- Replace the value of the key parameter with your own API key. -->
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk&callback=initialize" async defer></script>
请注意,这不是很可靠,因为:
- 我们不知道在 API 中触发双击事件所允许的确切超时时间,并且
- 在进行较慢的双击时触发
click
和事件的顺序似乎存在问题。dblclick
我在这里报告了。
推荐阅读
- java - Java JDB:错误:传输错误 202:gethostbyname:未知主机
- powershell - 使用 PowerShell 执行从 HTTP 服务器下载的二进制文件失败并显示“文件或目录已损坏且无法读取”
- image - 服务器上的图像 URL 路径未在普通窗口中呈现,但在隐身模式中是
- android - 通过 Xamarin Forms WebView 访问相机
- swift - UICollectionView 的 prefetchItemsAt 没有被调用
- javascript - Digitalocean:Rails 不会在生产模式下加载资产
- sql - 将行转置到列 SQL Server 2015
- colors - ExtJS 4 -grid 选定的单元格颜色
- delphi - 为什么我的类实现了子接口,但没有实现它们的父接口?
- php - 显示当前用户帖子的 WordPress 自定义页面主题