J'utilise l'API Google Maps (v3) pour dessiner quelques cartes sur une page. Une chose que je voudrais faire est de désactiver le zoom lorsque vous faites défiler la molette de la souris sur la carte, mais je ne sais pas comment.
J'ai désactivé le scaleControl (c'est-à-dire supprimé l'élément d'interface de mise à l'échelle), mais cela n'empêche pas la mise à l'échelle de la molette de défilement.
Voici une partie de ma fonction (c'est un simple plugin 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
};
jquery
google-maps
google-maps-api-3
jquery-plugins
aaronrussell
la source
la source
Réponses:
Dans la version 3 de l'API Maps, vous pouvez simplement définir l'
scrollwheel
option sur false dans les propriétés MapOptions :Si vous utilisiez la version 2 de l'API Maps, vous auriez dû utiliser l' appel d'API disableScrollWheelZoom () comme suit:
Le
scrollwheel
zoom est activé par défaut dans la version 3 de l'API Maps, mais dans la version 2, il est désactivé sauf s'il est explicitement activé avec l'enableScrollWheelZoom()
appel de l' API.la source
disableDefaultUI: true
peut remplacernavigationControl: false, mapTypeControl: false, scaleControl: false
Le code de Daniel fait le travail (merci un tas!). Mais je voulais désactiver complètement le zoom. J'ai découvert que je devais utiliser ces quatre options pour ce faire:
Voir: Spécification d'objet MapOptions
la source
scrollwheel
doit être tout en minuscules (vient de me rattraper en augmentant le W)Juste au cas où vous voudriez le faire dynamiquement;
Parfois, vous devez montrer quelque chose de "complexe" sur la carte (ou la carte est une petite partie de la mise en page), et ce zoom de défilement se situe au milieu, mais une fois que vous avez une carte propre, cette façon de zoomer est agréable.
la source
Rester simple! Variable Google Maps d'origine, aucune des choses supplémentaires.
la source
À partir de maintenant (octobre 2017), Google a mis en œuvre une propriété spécifique pour gérer le zoom / défilement, appelée
gestureHandling
. Son objectif est de gérer le fonctionnement des appareils mobiles, mais il modifie également le comportement des navigateurs de bureau. Le voici à partir de la documentation officielle :En bref, vous pouvez facilement forcer le réglage à "toujours zoomable" (
'greedy'
), "jamais zoomable" ('none'
) ou "l'utilisateur doit appuyer sur CRTL / ⌘ pour activer le zoom" ('cooperative'
).la source
J'ai créé un plugin jQuery plus développé qui vous permet de verrouiller ou déverrouiller la carte avec un joli bouton.
Ce plugin désactive l'iframe Google Maps avec une div superposition transparente et ajoute un bouton pour le déverrouiller. Vous devez appuyer pendant 650 millisecondes pour le déverrouiller.
Vous pouvez modifier toutes les options pour votre commodité. Vérifiez-le sur https://github.com/diazemiliano/googlemaps-scrollprevent
Voici un exemple.
la source
Edit in JSFiddle Result JavaScript HTML CSS
" Fait-il vraiment partie du code?Dans mon cas, l'essentiel était de s'installer
'scrollwheel':false
en init. Remarque: j'utilisejQuery UI Map
. Ci-dessous est mon en- tête de fonction d'initialisation CoffeeScript :la source
Au cas où, vous utilisez la bibliothèque GMaps.js , ce qui simplifie un peu les choses comme le géocodage et les broches personnalisées, voici comment résoudre ce problème en utilisant les techniques apprises dans les réponses précédentes.
la source
Pour quelqu'un qui se demande comment désactiver l' API Javascript Google Map
Il permettra le défilement du zoom si vous cliquez sur la carte une fois. Et désactivez après que votre souris quitte la div.
Voici un exemple
la source
Il vous suffit d'ajouter des options de carte:
la source
Une solution simple:
Source: https://github.com/Corsidia/scrolloff
la source
Au cas où tout le monde serait intéressé par une solution CSS pure pour cela. Le code suivant superpose un div transparent sur la carte et déplace le div transparent derrière la carte lorsque vous cliquez dessus. La superposition empêche le zoom, une fois cliqué, et derrière la carte, le zoom est activé.
Voir mon article de blog Google maps bascule le zoom avec css pour une explication de son fonctionnement, et stylo codepen.io/daveybrown/pen/yVryMr pour une démonstration de travail.
Avertissement: c'est principalement pour l'apprentissage et ne sera probablement pas la meilleure solution pour les sites de production.
HTML:
CSS:
la source
Utilisez ce morceau de code, qui vous donnera toute la couleur et le contrôle du zoom de google map. ( scaleControl: false et molette de défilement: false empêchera la molette de zoomer vers le haut ou vers le bas)
la source
Je le fais avec ces simples exemples
jQuery
CSS
Ou utilisez les options gmap
la source