使用Google Maps API在点击地图时启用滚动轮缩放
Enable scrollwheel zooming on a map upon click using Google Maps API
我正在使用Google Maps API,希望能够在移动设备上滚动经过地图,而在使用滚动轮向下滚动网页时不进行地图缩放。
这是我的代码:
var mapOptions = {
center: new google.maps.LatLng(51.605139, -2.918567),
zoom: 15,
scrollwheel: false,
draggable: false,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
这很好,但我想实现的是仅在单击地图时启用滚动轮缩放。
(所以在网页上,当我点击地图时,我可以放大它,或者在移动设备上,当我们点击屏幕时,我就可以捏住并缩放/拖动地图。(
我可以添加一个事件侦听器以仅在双击或单击时激活可拖动吗
是否可以使用API?
编辑
我尝试了以下代码,但似乎不起作用:
google.maps.event.addListener(map, 'click', function (event) {
var mapOptions = {
draggable: true,
};
});
这应该有效:
google.maps.event.addListener(map, 'click', function(event){
this.setOptions({scrollwheel:true});
});
google.maps.event.addListener(map, 'mouseout', function(event){
this.setOptions({scrollwheel:false});
});
除了莫勒博士的回答之外,这是一个方便的小考虑。
正如它显示的那样,当鼠标离开地图时,这将重新禁用滚动轮缩放。
这是我通常要做的:
用户与地图交互(鼠标向下(->设置可缩放
鼠标在地图上停留超过1秒->设置可缩放
鼠标离开地图->设置不可缩放
这通常能完成工作。当用户处于滚动页面的心态时,地图会随之出现。当用户想要放大/缩小时,他们需要与它交互,或者将指针放在那里一小段时间。
源代码:
google.maps.event.addListener(map, 'mousedown', function(event){
this.setOptions({scrollwheel:true});
});
google.maps.event.addListener(map, 'mouseover', function(event){
self = this;
timer = setTimeout(function() {
self.setOptions({scrollwheel:true});
}, 1000);
});
google.maps.event.addListener(map, 'mouseout', function(event){
this.setOptions({scrollwheel:false});
clearTimeout(timer);
});
我找到了一个解决方案,并收集了完整的代码,用于禁用加载时滚动和启用点击时滚动缩放。
加载时禁用滚动:滚动轮:false,收听地图上的点击事件并启用滚动轮:true,
map.addListener('click', function() {
map.set('scrollwheel', true);
});
请在我的博客中找到代码:http://anasthecoder.blogspot.ae/
根据谷歌官方文档,为了使其在移动和网站上完美工作,请使用以下内容:
var map = new google.maps.Map(document.getElementById(mapid), {
gestureHandling: 'greedy',
});
这是我的例子,它对我很有用。当页面加载时,谷歌地图(滚动(关闭,当你点击地图(滚动轮(打开。
var map = new google.maps.Map(document.getElementById('map-id'), {
scrollwheel: false,
});
google.maps.event.addListener(map, 'mouseout', function(){
this.setOptions({scrollwheel:false});
});
map.addListener('click', function() {
map.set('scrollwheel', true);
});
这将设置map,在点击map时,如果滚动轮值为false,它将使其为true,&如果真的话,就会变成假的。
function initMap() {
var florida = {
lat: 27.5814346,
lng: -81.0534459
};
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 6,
center: florida,
scrollwheel: false
});
google.maps.event.addListener(map, 'click', function(event) {
if (this.scrollwheel == false) {
this.setOptions({
scrollwheel: true
});
} else {
this.setOptions({
scrollwheel: false
});
}
});
}
相关文章:
- 启用JavaScript的过度滚动
- 刷新jqGrid;t在启用无限滚动的情况下保存当前页面位置
- 启用面板向左滚动时,如何在左侧部分显示页面
- 如何在HTML5页面上启用平滑滚动
- 如何在弹出窗口中启用滚动
- 启用数据间谍内部的滚动“;粘贴“;
- window.location-在启用滚动的情况下打开
- 如何在窗口调整大小时禁用和启用滚动魔术
- 在所有浏览器中为我的网站启用平滑滚动
- 在文本区域中启用滚动
- 用于禁用/启用滚动的跨浏览器解决方案
- 仅在模态上禁用/启用滚动
- 分离JPlayer's播放列表从播放器启用滚动移动
- 启用滚动高图表,高股票
- 如何在移动触摸屏设备上禁用滚动和重新启用滚动
- 弹出窗口中的滚动条:默认没有水平滚动条,但当内容很大时启用滚动条
- 启用按钮,在启用滚动条之前单击加载数据
- 如何在固定元素上启用滚动
- 使用Google Maps API在点击地图时启用滚动轮缩放
- 在函数内启用滚动