Google maps api 3 禁用谷歌地图上的可点击地标
我使用的是谷歌地图API v3。我想禁用默认google landmark/poi上的单击操作。例如,当我缩放到UCLA时,学校图标会显示出来(这很好),但我不希望用户单击并查看该位置的详细信息。我应该使用哪个API函数?我遇到了同样的问题。 谷歌最近似乎已经改变了他们的api,使基础地图标签“可点击”,并且还没有一个简单的api调用来禁用它们的可点击性。 我希望谷歌能添加这样一个简单的地图选项,但可惜它还不存在Google maps api 3 禁用谷歌地图上的可点击地标,google-maps-api-3,Google Maps Api 3,我使用的是谷歌地图API v3。我想禁用默认google landmark/poi上的单击操作。例如,当我缩放到UCLA时,学校图标会显示出来(这很好),但我不希望用户单击并查看该位置的详细信息。我应该使用哪个API函数?我遇到了同样的问题。 谷歌最近似乎已经改变了他们的api,使基础地图标签“可点击”,并且还没有一个简单的api调用来禁用它们的可点击性。 我希望谷歌能添加这样一个简单的地图选项,但可惜它还不存在 var opts = { clickableLabels:false }; va
var opts = { clickableLabels:false };
var map = new maps.google.com.map(div,opts);
以下解决方案可行,但由于它依赖于自定义样式的地图分幅,免费地图限制为(每天加载2500张地图)-
此问题已通过google登录,网址为:
请在此处对您的需求进行点评。我知道这个问题很老,但这个答案可能会帮助其他人: 我不确定这是否合法,但我最终探索了代码并做出了以下结论:
$("#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();
}
这对我来说很有效,没有显示信息窗口,同时保留了所有图标。欢迎任何有想法改进代码的人,信息窗口在第一次打开时只显示了一点,在第一次打开后,它就完全消失了。我知道OP想要一个解决方案,它可以保留标签/图标,但暂停点击事件。我不确定这是否可能;请 但是,我们中的一些人正在绘制图形,而无图形管理器和标签/图标正在阻碍新点的添加。如果符合您的要求,您可以临时删除图标/标签。我发现公交、poi和景观都需要切换:
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);
谷歌已经为此公开了一个选项。请参见
google.maps.MapOptions
的clickableIcons
初始化代码示例:
map = new google.maps.Map(document.getElementById('map'), {
clickableIcons: false
});
将此选项添加到mapOption 可单击图标:false 这是更多的选择,我想你会的
draggable:true,//用于禁用draggable
disableDefaultUI:true,//这表示禁用默认UI
fullscreenControl:false,//用于禁用全屏
scrollwheel:true,//用于禁用滚轮
disableDoubleClickZoom:false,//用于禁用双击缩放
DragTableCursor:'crosshair',//这是用于游标类型的
draggingCursor:'move',//这是用于拖动光标类型
minZoom:3,//这是地图的最小缩放
maxZoom:18,//这是地图的最大缩放
//注:最大、最小缩放对我的设计非常重要。
zoom:14,//这是默认的缩放
clickableIcons:false,//这将禁用除自定义信息窗口或信息框之外的所有标签图标。
我在airbnb地图搜索中找到了一个示例。他们禁用了地标单击而不隐藏地标。他们是怎么做到的?我想你可以强制他们的api的早期版本,比如说3.3或3.4,它可能会工作,或者你可以使用我在下面发布的最新api解决方案。我会尝试一下。谢谢。读了这篇文章,它看起来会完全隐藏标记,而不是简单地让它们不可点击。对吗?对。对于一个非官方的(不稳定的)解决方案,可以看到我在上面关于强制使用早期API版本的问题下的评论。如果你能找到更好的解决方案,我很想听听。谢谢!这完全有帮助
map = new google.maps.Map(document.getElementById('map'), {
clickableIcons: false
});