我正在使用Google Maps API(v3)在页面上绘制一些地图。 我想做的一件事是在地图上滚动鼠标滚轮时禁用缩放,但我不确定如何。

我已禁用scaleControl(即删除了缩放UI元素),但这不会阻止滚轮缩放。

这是我的函数的一部分(它是一个简单的jQuery插件):

$.fn.showMap = function(options, addr){options = $.extend({navigationControl: false,mapTypeControl: false,scaleControl: false,draggable: false,mapTypeId: google.maps.MapTypeId.ROADMAP}, options);var map = new google.maps.Map(document.getElementById($(this).attr('id')), options);// Code cut from this example as not relevant
};

#1楼

在Maps API的第3版中,您只需在MapOptions属性中将scrollwheel选项设置为false:

options = $.extend({scrollwheel: false,navigationControl: false,mapTypeControl: false,scaleControl: false,draggable: false,mapTypeId: google.maps.MapTypeId.ROADMAP
}, options);

如果您使用的是Maps API的第2版,则必须使用disableScrollWheelZoom() API调用,如下所示:

map.disableScrollWheelZoom();

scrollwheel缩放默认情况下,在地图API第3版启用,但在第2版,除非与明确启用它被禁用enableScrollWheelZoom() API调用。


#2楼

在我的情况下,关键的是设置'scrollwheel':false在init中为'scrollwheel':false 。 注意:我正在使用jQuery UI Map 。 下面是我的CoffeeScript init函数标题:

 $("#map_canvas").gmap({'scrollwheel':false}).bind "init", (evt, map) ->

#3楼

以防你想动态地这样做;

function enableScrollwheel(map) {if(map) map.setOptions({ scrollwheel: true });
}function disableScrollwheel(map) {if(map) map.setOptions({ scrollwheel: false });
}

有时候你必须在地图上显示一些“复杂”的东西(或者地图是布局的一小部分),这个滚动缩放位于中间,但是一旦你有一个干净的地图,这种缩放方式就很好了。


#4楼

把事情简单化! 原始谷歌地图变量,没有额外的东西。

 var mapOptions = {zoom: 16,center: myLatlng,scrollwheel: false}

#5楼

为了以防万一,您正在使用GMaps.js库,这使得执行地理编码和自定义引脚等操作变得更加简单,以下是使用从先前答案中学习的技术解决此问题的方法。

var Gmap = new GMaps({div: '#main-map', // FYI, this setting property used to be 'el'. It didn't need the '#' in older versionslat: 51.044308,lng: -114.0630914,zoom: 15
});// To access the Native Google Maps object use the .map property
if(Gmap.map) {// Disabling mouse wheel scroll zoomingGmap.map.setOptions({ scrollwheel: false });
}

#6楼

我创建了一个更加开发的jQuery插件,允许您使用一个漂亮的按钮锁定或解锁地图。

此插件会禁用带有透明叠加div的Google Maps iframe,并为unlockit添加一个按钮。 您必须按下650毫秒才能解锁它。

您可以更改所有选项以方便使用。 请访问https://github.com/diazemiliano/googlemaps-scrollprevent查看

这是一些例子。

 (function() { $(function() { $("#btn-start").click(function() { $("iframe[src*='google.com/maps']").scrollprevent({ printLog: true }).start(); return $("#btn-stop").click(function() { return $("iframe[src*='google.com/maps']").scrollprevent().stop(); }); }); return $("#btn-start").trigger("click"); }); }).call(this); 
 .embed-container { position: relative !important; padding-bottom: 56.25% !important; height: 0 !important; overflow: hidden !important; max-width: 100% !important; } .embed-container iframe { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; } .mapscroll-wrap { position: static !important; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <script src="https://cdn.rawgit.com/diazemiliano/googlemaps-scrollprevent/v.0.6.5/dist/googlemaps-scrollprevent.min.js"></script> <div class="embed-container"> <iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d12087.746318586604!2d-71.64614110000001!3d-40.76341959999999!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x9610bf42e48faa93%3A0x205ebc786470b636!2sVilla+la+Angostura%2C+Neuqu%C3%A9n!5e0!3m2!1ses-419!2sar!4v1425058155802" width="400" height="300" frameborder="0" style="border:0"></iframe> </div> <p><a id="btn-start" href="#">"Start Scroll Prevent"</a> <a id="btn-stop" href="#">"Stop Scroll Prevent"</a> </p> 

#7楼

只是因为有人对这个纯css解决方案感兴趣。 以下代码在地图上覆盖透明div,并在单击时将透明div移动到地图后面。 叠加可防止缩放,一旦单击,并在地图后面,即可启用缩放。

请参阅我的博客文章谷歌地图切换缩放与css解释它是如何工作的,并使用笔codepen.io/daveybrown/pen/yVryMr进行工作演示。

免责声明:这主要用于学习,可能不是生产网站的最佳解决方案。

HTML:

<div class="map-wrap small-11 medium-8 small-centered columns"><input id="map-input" type="checkbox" /><label class="map-overlay" for="map-input" class="label" onclick=""></label><iframe src="https://www.google.com/maps/embed?pb=!1m14!1m12!1m3!1d19867.208601651986!2d-0.17101002911118332!3d51.50585742500925!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!5e0!3m2!1sen!2suk!4v1482355389969"></iframe>
</div>

CSS:

.map-wrap {position: relative;overflow: hidden;height: 180px;margin-bottom: 10px;
}#map-input {opacity: 0;
}.map-overlay {display: block;content: '';position: absolute;top: 0;left: 0;width: 100% !important;height: 100% !important;overflow: hidden;z-index: 2;
}#map-input[type=checkbox]:checked ~ iframe {z-index: 3;
}#map-input[type=checkbox]:checked ~ .map-overlay {position: fixed;top: 0;left: 0;width: 100% !important;height: 100% !important;
}iframe {position: absolute;top: 0;left: 0;width: 100% !important;height: 100% !important;z-index: 1;border: none;
}

#8楼

对于想知道如何禁用Javascript Google Map API的人

如果单击地图一次,它将启用缩放滚动。 并在鼠标退出div后禁用

这是一些例子

 var map; var element = document.getElementById('map-canvas'); function initMaps() { map = new google.maps.Map(element , { zoom: 17, scrollwheel: false, center: { lat: parseFloat(-33.915916), lng: parseFloat(151.147159) }, }); } //START IMPORTANT part //disable scrolling on a map (smoother UX) jQuery('.map-container').on("mouseleave", function(){ map.setOptions({ scrollwheel: false }); }); jQuery('.map-container').on("mousedown", function() { map.setOptions({ scrollwheel: true }); }); //END IMPORTANT part 
 .big-placeholder { background-color: #1da261; height: 300px; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <html> <body> <div class="big-placeholder"> </div> <!-- START IMPORTANT part --> <div class="map-container"> <div id="map-canvas" style="min-height: 400px;"></div> </div> <!-- END IMPORTANT part--> <div class="big-placeholder"> </div> <script async defer src="https://maps.googleapis.com/maps/api/js?key=AIzaSyAIjN23OujC_NdFfvX4_AuoGBbkx7aHMf0&callback=initMaps"> </script> </body> </html> 

#9楼

简单的解决方案:

 // DISABLE MOUSE SCROLL IN MAPS // enable the pointer events only on click; $('.gmap-wrapper').on('click', function () { $('.gmap-wrapper iframe').removeClass('scrolloff'); // set the pointer events true on click }); // you want to disable pointer events when the mouse leave the canvas area; $(".gmap-wrapper").mouseleave(function () { $('.gmap-wrapper iframe').addClass('scrolloff'); // set the pointer events to none when mouse leaves the map area }); 
 .scrolloff{ pointer-events: none; } 
 <html> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <div class="gmap-wrapper"> <iframe class="scrolloff" src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d44754.55736493158!2d9.151166379101554!3d45.486726!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x4786bfca7e8fb1cb%3A0xee8d99c9d153be98!2sCorsidia!5e0!3m2!1sit!2sit!4v1496947992608" width="600" height="450" frameborder="0" style="border:0" allowfullscreen></iframe> </div> </html> 

资料来源: https : //github.com/Corsidia/scrolloff


#10楼

使用那段代码,它将为您提供谷歌地图的所有颜色和缩放控制。 ( scaleControl:falsescrollwheel:false将阻止鼠标滚轮向上或向下缩放)

 function initMap() { // Styles a map in night mode. var map = new google.maps.Map(document.getElementById('map'), { center: {lat: 23.684994, lng: 90.356331}, zoom: 8, scaleControl: false, scrollwheel: false, styles: [ {elementType: 'geometry', stylers: [{color: 'F1F2EC'}]}, {elementType: 'labels.text.stroke', stylers: [{color: '877F74'}]}, {elementType: 'labels.text.fill', stylers: [{color: '877F74'}]}, { featureType: 'administrative.locality', elementType: 'labels.text.fill', stylers: [{color: '#d59563'}] }, { featureType: 'poi', elementType: 'labels.text.fill', stylers: [{color: '#d59563'}] }, { featureType: 'poi.park', elementType: 'geometry', stylers: [{color: '#263c3f'}] }, { featureType: 'poi.park', elementType: 'labels.text.fill', stylers: [{color: '#f77c2b'}] }, { featureType: 'road', elementType: 'geometry', stylers: [{color: 'F5DAA6'}] }, { featureType: 'road', elementType: 'geometry.stroke', stylers: [{color: '#212a37'}] }, { featureType: 'road', elementType: 'labels.text.fill', stylers: [{color: '#f77c2b'}] }, { featureType: 'road.highway', elementType: 'geometry', stylers: [{color: '#746855'}] }, { featureType: 'road.highway', elementType: 'geometry.stroke', stylers: [{color: 'F5DAA6'}] }, { featureType: 'road.highway', elementType: 'labels.text.fill', stylers: [{color: 'F5DAA6'}] }, { featureType: 'transit', elementType: 'geometry', stylers: [{color: '#2f3948'}] }, { featureType: 'transit.station', elementType: 'labels.text.fill', stylers: [{color: '#f77c2b3'}] }, { featureType: 'water', elementType: 'geometry', stylers: [{color: '#0676b6'}] }, { featureType: 'water', elementType: 'labels.text.fill', stylers: [{color: '#515c6d'}] }, { featureType: 'water', elementType: 'labels.text.stroke', stylers: [{color: '#17263c'}] } ] }); var marker = new google.maps.Marker({ position: {lat: 23.684994, lng: 90.356331}, map: map, title: 'BANGLADESH' }); } 

#11楼

我用这个简单的例子来做

jQuery的

$('.map').click(function(){$(this).find('iframe').addClass('clicked')}).mouseleave(function(){$(this).find('iframe').removeClass('clicked')
});

CSS

.map {width: 100%;
}
.map iframe {width: 100%;display: block;pointer-events: none;position: relative; /* IE needs a position other than static */
}
.map iframe.clicked {pointer-events: auto;
}

或者使用gmap选项

function init() { var mapOptions = {  scrollwheel: false,

#12楼

您只需添加地图选项:

scrollwheel: false

#13楼

截至目前(2017年10月),Google已经实现了一个特定的属性来处理缩放/滚动,称为gestureHandling 。 其目的是处理移动设备操作,但它也会修改桌面浏览器的行为。 这是官方文件 :

 function initMap() { var locationRio = {lat: -22.915, lng: -43.197}; var map = new google.maps.Map(document.getElementById('map'), { zoom: 13, center: locationRio, gestureHandling: 'none' }); 

gestureHandling的可用值为:

  • 'greedy' :当用户在屏幕上滑动(拖动)时,地图始终平移(向上或向下,向左或向右)。 换句话说,单指滑动和双指滑动都会导致地图平移。
  • 'cooperative' :用户必须用一根手指滑动才能滚动页面和两根手指以平移地图。 如果用户用一根手指滑动地图,地图上会出现一个叠加层,并提示用户使用两根手指移动地图。 在桌面应用程序上,用户可以在按下修改键(ctrl或⌘键)的同时滚动来缩放或平移地图。
  • 'none' :此选项禁用移动设备地图上的平移和捏合,以及在桌面设备上拖动地图。
  • 'auto' (默认值):根据页面是否可滚动,Google Maps JavaScript API将gestureHandling属性设置为'cooperative''greedy'

简而言之,您可以轻松地将设置强制为“始终可缩放”( 'greedy' ),“永不缩放”( 'none' ),或“用户必须按CRTL /⌘才能启用缩放”( 'cooperative' )。


#14楼

丹尼尔的代码完成了这项工作(感谢一堆!)。 但我想完全禁用缩放。 我发现我必须使用所有这四个选项来执行此操作:

{zoom: 14,                        // Set the zoom level manuallyzoomControl: false,scaleControl: false,scrollwheel: false,disableDoubleClickZoom: true,...
}

请参阅: MapOptions对象规范

如何使用Google Maps API禁用鼠标滚轮缩放相关推荐

  1. Google Maps API 代码

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. Google maps API开发(一)(转)

    一.加载Google maps API <script type="text/javascript" src="http://ditu.google.com/map ...

  3. Google maps API开发

    Google maps API开发 注:经纬度的查询,找了半天,终于找着活神仙了,(*^__^*) 嘻嘻-- 1.经纬度查询工具:http://www.playgoogle.com/googlemap ...

  4. Google Maps API v2 android版本开发 国内手机不支持google play Service相关问题解决--图文教程

    Google Maps API v2 android版本开发 国内手机不支持google play Service相关问题解决--图文教程 参考文章: (1)Google Maps API v2 an ...

  5. Google Maps API编程资源大全

    Google Maps API是Google自己推出编程API,可以让全世界对Google Maps有兴趣的程序设计师自行开发基于Google Maps的服务,建立自己的地图网站.以下是我在Googl ...

  6. Google Maps API 简易教程(四)

    Google Maps 类型 一.基本地图类型 Google Maps API支持一下map类型: .ROADMAP(正式的,默认为2D地图) .SATELLITE(逼真的地图) .HYBRID(逼真 ...

  7. Google Maps API V3: 通过邮编获取经纬度 Get Location (Latitude and Longitude) from Zip Cod

    In this article I will explain with an example, how to get Location Coordinates i.e. Latitude and Lo ...

  8. Google Maps API 以某一经纬度为中心,以某一长度位半径画圆 Draw the radius of a circle...

    直接看代码: <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" ...

  9. Google Maps API 申请方式变更为APIs Console, android手机申请方式

    使用旧的key访问会弹出要你到:http://code.google.com/apis/maps/documentation/javascript/v2/introduction.html#0btai ...

最新文章

  1. 第18节 知识管理
  2. 【错误记录】发布 Flutter 插件包报错 ( ‘gmail.com‘ has insufficient permissions to upload new versions of package)
  3. URL去重的几种方法
  4. Java语言学习之泛型的用法
  5. MySQL的NULL值
  6. 【响应式编程的思维艺术】 (1)Rxjs专题学习计划
  7. 宝塔pure-ftpd文件管理不显示目录|文件夹打不开
  8. html钢琴谱播放器,蛐蛐五线谱播放器
  9. 唯美毕业论文答辩PPT模板
  10. Android设置屏幕亮度的两种方式
  11. 固态硬盘安装Win7双系统
  12. 如何复盘已搭建的会员积分系统
  13. Java 的大 Class 到底是什么?,java高级程序员面试笔试宝典蔡羽
  14. MySql 高级查询强化学习
  15. c语言实验内容.doc答案,C语言程序设计实验内容与答案.doc
  16. 计算机科学丛书之第9章和第10章代码
  17. SELinux 学习总结
  18. CreatorPrimer | 飞机大战(一)
  19. BL-HUF35A-AV-TRB 电子元器件 BRIGHT 封装SMD 批次2021
  20. macOS Ventura 13 下如何驱动4代cpu核显hd4600

热门文章

  1. 学习面试题(day01)
  2. 统计字段中出现字符串的次数
  3. 2014.10.18笔记
  4. oracle的三个网络配置文件
  5. 2003下安装Comodo pro (通用)
  6. CA的ITSM产品Unicenter介绍
  7. HDFS 读取、写入、遍历文件夹获取文件全路径、append
  8. Python基础-程序控制结构
  9. input美化上传按钮美化
  10. Windows win7下VMware Virtual Ethernet Adapter未识别网络解决方法