如何确定是否单击了地图或标记
How to determine if map or marker is clicked
再次感谢您提供的精美地图 API。
我们目前正在努力确定是否单击了标记或地图本身。我们已将事件侦听器添加到地图和标记(作为组添加)。
当我们现在点击地图时,两个事件监听器都会被触发。
我们是否遗漏了 API 文档中的内容?我认为应该有一种方法可以获取有关单击内容的正确信息。
地图事件侦听器
map.addEventListener('tap', (event) => {
action(event);
});
标记事件侦听器
marker.addEventListener('tap', (event) => {
action(event);
});
提前致谢。
嘿,这个小例子对我来说很好用,我在文档中看到没有用于点击的侦听器,这些是受支持的侦听器。
https://developers.google.com/maps/documentation/javascript/events
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<title>Simple Markers</title>
<style>
/* Always set the map height explicitly to define the size of the div
* element that contains the map. */
#map {
height: 100%;
}
/* Optional: Makes the sample page fill the window. */
html,
body {
height: 100%;
margin: 0;
padding: 0;
}
</style>
</head>
<body>
<div id="map"></div>
<script>
var map, marker;
function initMap() {
var myLatLng = {
lat: -25.363,
lng: 131.044
};
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 4,
center: myLatLng
});
var marker = new google.maps.Marker({
position: myLatLng,
map: map,
title: 'Hello World!'
});
map.addListener('click', (event) => {
console.log(event, 'from map')
});
marker.addListener('click', (event) => {
console.log(event, 'from marker')
});
}
</script>
<script async defer src="https://maps.googleapis.com/maps/api/js?key=YOURKEY&callback=initMap">
</script>
</body>
</html>
最好在地图对象上使用单个侦听器。
关键是检查 event.target
的实例:
map.addEventListener('tap', event => {
if (event.target instanceof H.map.Marker) {
// Some action. Typically, you want to use the data that you may have referenced
// in the marker creation code, or get the coordinates. Here we log the data
console.log( event.target.getData() );
}
}
再次感谢您提供的精美地图 API。
我们目前正在努力确定是否单击了标记或地图本身。我们已将事件侦听器添加到地图和标记(作为组添加)。
当我们现在点击地图时,两个事件监听器都会被触发。
我们是否遗漏了 API 文档中的内容?我认为应该有一种方法可以获取有关单击内容的正确信息。
地图事件侦听器
map.addEventListener('tap', (event) => {
action(event);
});
标记事件侦听器
marker.addEventListener('tap', (event) => {
action(event);
});
提前致谢。
嘿,这个小例子对我来说很好用,我在文档中看到没有用于点击的侦听器,这些是受支持的侦听器。
https://developers.google.com/maps/documentation/javascript/events
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<title>Simple Markers</title>
<style>
/* Always set the map height explicitly to define the size of the div
* element that contains the map. */
#map {
height: 100%;
}
/* Optional: Makes the sample page fill the window. */
html,
body {
height: 100%;
margin: 0;
padding: 0;
}
</style>
</head>
<body>
<div id="map"></div>
<script>
var map, marker;
function initMap() {
var myLatLng = {
lat: -25.363,
lng: 131.044
};
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 4,
center: myLatLng
});
var marker = new google.maps.Marker({
position: myLatLng,
map: map,
title: 'Hello World!'
});
map.addListener('click', (event) => {
console.log(event, 'from map')
});
marker.addListener('click', (event) => {
console.log(event, 'from marker')
});
}
</script>
<script async defer src="https://maps.googleapis.com/maps/api/js?key=YOURKEY&callback=initMap">
</script>
</body>
</html>
最好在地图对象上使用单个侦听器。
关键是检查 event.target
的实例:
map.addEventListener('tap', event => {
if (event.target instanceof H.map.Marker) {
// Some action. Typically, you want to use the data that you may have referenced
// in the marker creation code, or get the coordinates. Here we log the data
console.log( event.target.getData() );
}
}