我正在使用谷歌地图API v3。我想禁用默认google landmark / poi上的点击操作。例如,当我缩放到UCLA时,学校图标显示(没关系),但我不希望用户单击并查看该位置的详细信息。我应该使用哪种API函数?
答案 0 :(得分:28)
clickableIcons
in the docs的google.maps.MapOptions
。
示例初始化代码:
map = new google.maps.Map(document.getElementById('map'), {
clickableIcons: false
});
答案 1 :(得分:7)
我遇到了同样的问题。 谷歌似乎最近更改了他们的API以使基本地图标签“可点击”,并且还没有简单的API调用来禁用他们的可点击性。 http://groups.google.com/group/google-maps-js-api-v3/browse_thread/thread/f1ac9ad4da3606fe
我想看看谷歌添加这样一个简单的地图选项,但唉它还不存在
var opts = { clickableLabels:false };
var map = new maps.google.com.map(div,opts);
以下解决方案有效,但由于它依赖于自定义样式的地图图块,因此免费地图仅限于(每天2,500个地图加载) - See Google Maps FAQ。
function initialize() {
// For more details see
// http://code.google.com/apis/maps/documentation/javascript/styling.html
var noPOILabels = [
{
featureType: "poi",
elementType: "labels",
stylers: [ { visibility: "off" } ]
}
];
// Create a new StyledMapType object, passing it the array of styles,
// as well as the name to be displayed on the map type control.
var noPOIMapType = new google.maps.StyledMapType(noPOILabels,
{name: "NO POI"});
// Create a map object, and include the MapTypeId to add
// to the map type control.
var mapOptions = {
zoom: 11,
center: new google.maps.LatLng(55.6468, 37.581),
mapTypeControlOptions: {
mapTypeIds: [google.maps.MapTypeId.ROADMAP, 'no_poi']
}
};
var map = new google.maps.Map(document.getElementById('map_canvas'),
mapOptions);
//Associate the styled map with the MapTypeId and set it to display.
map.mapTypes.set('no_poi', noPOIMapType);
map.setMapTypeId('no_poi');
}
答案 2 :(得分:5)
将此选项添加到mapOption clickableIcons:false
这是我认为你会选择的更多选择
draggable: true, // this is for disable the Draggable
disableDefaultUI: true, // this for disable Default UI
fullscreenControl: false, // this is for disable Full Screen
scrollwheel: true, // this is for disable Scroll Wheel
disableDoubleClickZoom: false, // this is for disable Double Click Zoom
draggableCursor:'crosshair',// this is for cursor type
draggingCursor:'move', // this is for dragging cursor type
minZoom: 3, // this is for min zoom for map
maxZoom: 18 , // this is for max zoom for map
//note : max, min zoom it's so important for my design.
zoom: 14, // this is to make default zoom
clickableIcons: false, // this is to disable all labels icons except your custom infowindow or Infobox.
答案 3 :(得分:3)
答案 4 :(得分:1)
据我所知,OP想要一个能够持久保存标签/图标但暂停点击事件的解决方案。我不确定这是可能的;请star this issue
然而,我们中的一些人正在绘制形状,而没有绘图管理器和标签/图标阻碍了新点的添加。如果它符合您的要求,您可以暂时删除图标/标签。我发现 transit , poi 和 landscape 都需要切换:
var map = new google.maps.Map(document.getElementById("map"), {});
map.poi = function(state){
var styles = [
{
"featureType": "transit",
"stylers": [
{ "visibility": "off" }
]
},{
"featureType": "poi",
"stylers": [
{ "visibility": "off" }
]
},{
"featureType": "landscape",
"stylers": [
{ "visibility": "off" }
]
}
];
this.set("styles", (state)? {} : styles );
}
用法:
//turn the labels/icons off
map.poi(false);
//turn them back on
map.poi(true);
答案 5 :(得分:0)
我知道这个问题已经过时了,但也许这个答案会对其他人有所帮助:
我不确定这是否合法,但我最终探索了代码并做了这个:
$("#google-map").on("mousedown",function(){
setTimeout(function(){
disableInfoWindows();
},500);
});
function disableInfoWindows()
{
$(".gm-iw.gm-sm").parent().parent().remove();
$("[style='position: absolute; left: -2px; top: -336px; width: 59px; height: 492px; -webkit-user-select: none; border: 0px; padding: 0px; margin: 0px;']")
.parent()
.parent()
.remove();
}
它对我有用,没有infoWindow出现,同时保留所有图标。任何有想法增强代码的人都会受到欢迎,infoWindow在第一次打开时会出现一点点,在第一次打开之后,它就完全消失了。