如何在Google地图中禁用总线图标上的点击事件?我有自己的标记,提供公交车站信息,用户可以不小心点击公交车站而不是我的自定义标记,有时可以有多个弹出框。见下图:
我将此代码用于地图:
// https://maps.googleapis.com/maps/api/js?key=XXXXXX&sensor=true&callback=initialize
var mapOptions = {
center: new google.maps.LatLng(mapCenterLat, mapCenterLon),
zoom: 9,
mapTypeId: google.maps.MapTypeId.ROADMAP,
mapTypeControl: false,
panControl: true,
scaleControl: false,
overviewMapControl: false,
streetViewControl: false,
navigationControl: true,
navigationControlOptions: {
style: google.maps.NavigationControlStyle.ANDROID
}
};
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
答案 0 :(得分:1)
从Maps JavaScript API版本3.24开始,您可以在MapOptions对象中使用属性clickableIcons:
https://developers.google.com/maps/documentation/javascript/3.exp/reference#MapOptions
您可以使用此属性通过将clickableIcons属性设置为false来关闭地图上的可点击图标。还存在一个setClickableIcons()方法。
请看这个例子: http://jsbin.com/liyamecoqa/edit?html,output
var map;
/**
* The POIControl adds a control to the map that turns POI
* clicking off or on.
* This constructor takes the control DIV as an argument.
* @constructor
*/
function POIControl(controlDiv, map) {
// Set CSS for the control border.
var controlUI = document.createElement('div');
controlUI.style.backgroundColor = '#fff';
controlUI.style.border = '2px solid #fff';
controlUI.style.borderRadius = '3px';
controlUI.style.boxShadow = '0 2px 6px rgba(0,0,0,.3)';
controlUI.style.cursor = 'pointer';
controlUI.style.marginBottom = '22px';
controlUI.style.textAlign = 'center';
if (map.getClickableIcons()) {
controlUI.title = 'Click to disable Map Icons clicks.';
} else {
controlUI.title = 'Click to enable Map Icons clicks.';
}
controlDiv.appendChild(controlUI);
// Set CSS for the control interior.
var controlText = document.createElement('div');
controlText.style.color = 'rgb(25,25,25)';
controlText.style.fontFamily = 'Roboto,Arial,sans-serif';
controlText.style.fontSize = '16px';
controlText.style.lineHeight = '38px';
controlText.style.paddingLeft = '5px';
controlText.style.paddingRight = '5px';
if (map.getClickableIcons()) {
controlText.innerHTML = 'Disable POIs';
} else {
controlText.innerHTML = 'Enable POIs';
}
controlUI.appendChild(controlText);
// Setup the click event listeners: flip the clickableIcons state.
controlUI.addEventListener('click', function() {
var clickableIcons = map.getClickableIcons();
if (clickableIcons) {
controlUI.title = 'Click to enable Map Icons clicks.';
controlText.innerHTML = 'Enable POIs';
} else {
controlUI.title = 'Click to disable Map Icons clicks.';
controlText.innerHTML = 'Disable POIs';
}
map.setClickableIcons(!clickableIcons);
});
}
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
center: {lat: -33.858667, lng: 151.214028},
zoom: 16,
clickableIcons: false
});
// Create the DIV to hold the control and call the POIControl()
// constructor passing in this DIV.
var poiControlDiv = document.createElement('div');
var poiControl = new POIControl(poiControlDiv, map);
poiControlDiv.index = 1;
map.controls[google.maps.ControlPosition.TOP_CENTER].push(poiControlDiv);
}
html, body {
height: 100%;
margin: 0;
padding: 0;
}
#map {
height: 100%;
}
<div id="map"></div>
<script src="https://maps.googleapis.com/maps/api/js?v=3&key=AIzaSyDztlrk_3CnzGHo7CFvLFqE_2bUKEq1JEU&callback=initMap"
async defer></script>
答案 1 :(得分:-1)
您可以将多边形放在POI上以阻止它们被点击。
这是执行http://www.geocodezip.com/v3_GoogleEx_rectangle-simple_RoseCanyonClear.html
的geocodezip示例