Google Maps v3 fitBounds() Zoom de trop près pour seul marqueur
Est-il un moyen de mettre un max niveau de zoom pour fitBounds()
? Mon problème est que lorsque la carte est nourri exclusivement d'un seul emplacement, il zoome dans la mesure où il peut aller, qui prend vraiment la carte hors de son contexte et de les rendre inutilisables. Peut-être que je suis la mauvaise direction?
Merci d'avance!
- stackoverflow.com/questions/4523023/... c'est une bien meilleure solution. Particulier @Nequins répondre
Vous devez vous connecter pour publier un commentaire.
J'aime mrt la solution (surtout quand vous ne savez pas combien de points vous sera cartographie ou de l'ajustement pour l'), sauf qu'il jette le marqueur de congé, de sorte qu'il n'est pas dans le centre de la carte plus. J'ai simplement rallongé par un point supplémentaire en soustrayant .01 à partir de la lat et de gnl, ainsi il conserve le marqueur dans le centre. Fonctionne très bien, merci de mrt!
fitBounds()
méthode est parce que le zoom se produit de manière asynchrone: stackoverflow.com/questions/2989858/...Vous pouvez configurer votre carte avec
maxZoom
dans leMapOptions
api (référence) comme ceci:Cela permettrait de garder la carte de zoomer plus loin lors de l'utilisation de
fitBounds()
et même supprime les niveaux de zoom à partir de la commande de zoom.maxZoom
avant de monter les limites et puis videz à nouveau en utilisantmap.setOptions({ maxZoom: undefined })
sur leidle
événement déclenché par la modification de la limite. Cela empêche le zoom in, zoom out effet, au lieu de réinitialiser le zoom dans leidle
événement.Une autre solution est d'étendre les limites, si vous détectez ils sont trop petits avant d'exécuter fitBounds():
À l'aide de la par maxzoom option qui fonctionne le mieux pour pas de zoom pour fermer sur les marques que vous avez.
Une fois que vous avez ajouté toutes les véritables limites ajouter ces lignes
il obtenir le centre de l'véritables limites ajoute ensuite deux autres points, l'un au nord et un au sud-ouest de la vous centre
Cela détermine le minimum de zoom, de modifier la valeur de décalage pour augmenter ou diminuer le zoom
Si c'est pour un seul endroit, vous pouvez utiliser setCenter() et setZoom() à la place.
u peut utiliser
de cette façon, u définir les propriétés de la carte après que la carte a été initialisée .... u pouvez définir autant de fois que tu veux ... mais dans le cas ... u peux les définir avant de fitBounds()
bonne chance,
rarutu
La façon dont je prévenir la carte de zoomer plus loin à l'est par l'ajout de cette ligne de code:
Directement après cette ligne:
N'hésitez pas à changer le niveau de zoom à quelque niveau que ce soit vous ne voulez pas la carte pour zoomer passé.
Si vous avez des problèmes ou des questions, laissez moi un commentaire sur le blog, j'ai écrit à ce sujet à http://icode4you.net/creating-your-own-store-locator-map-how-to-prevent-the-map-from-zooming-in-too-close-on-a-single-marker
J'aime vraiment mrt solution et cela fonctionne parfaitement, si vous avez toujours seulement un point à travailler. J'ai cependant trouvé que si la zone de sélection n'était pas fondée sur un point, mais les points étaient très proches, ce qui pourrait entraîner la carte pour effectuer un zoom avant trop loin.
Ici un moyen de vérifier d'abord si les points sont à l'intérieur d'une distance les uns des autres, alors si elles sont plus petites que la distance minimale, d'étendre les limites de cette distance minimale:
Espère que cela aide quelqu'un!
Cela vous donne un contrôle direct sur max autorisé zoom sur les limites de l'ajustement.
J'ai résolu avec ce morceau, depuis Google Maps V3 est basé sur l'événement:
vous pouvez dire à l'API pour faire reculer le zoom pour un montant adéquat lorsque l' zoom_changed les déclencheurs d'événement:
J'ai utilisé intial faire la carte, pas de zoom trop de chargement lors de l'éventuelle fitBounds permorfed, sans elle tout de zoom de l'événement plus de 11 serait impossible pour l'utilisateur.
Que pour moi les gars, je le résoudre en créant un évènement idle après fitBounds. Fonctionne parfaitement. Devinez qui est l'un des plus propres solutions ici
J'ai soulution basée sur la limitation de zoom maximum lors de la pose de bornes. Fonctionne pour moi (testé sur Win 7 - 9 IE, FF 13, Chrome 19):
Et .. ici en est une autre.
Même idée que mrt et Ryan, mais
(*) Note: Si la case est déjà assez grand, alors l'ajout de ces deux points ne doit avoir aucun effet. Donc, nous n'avons pas besoin de toute autre vérification.
EDIT: je ne suis pas sûr si mon calcul du ratio correctement, étant donné que nous avons une projection de Mercator. Je re-edition de cette..
Son déjà répondu ici Google Maps v3: Exécution min. le niveau de zoom lors de l'utilisation de fitBounds qu'il fonctionne comme prévu 🙂 alors maintenant, si après ajustement des limites de zoom est moins disons 13 ensuite, vous pouvez définir de nouvelles de zoom qui vous préférez
Après l'appel de
fitBounds()
méthode, essayez de configurer le niveau de zoom de nouveau. Il va forcer la carte pour être à ce niveau de zoom, tout en étant centrée au bon endroit.Ici est mon aller à une solution, qui fonctionne également lorsque deux marqueurs sont très proches. L'effectif maximum le niveau de zoom est le même dans les deux situations. Donc nous n'en finissent pas de zoom unneccesarily, quand il y a plus d'un marqueur
L'effet, encore une fois est d'assurer un niveau de zoom maximal, sans l'aide de la par maxzoom option, qui a probablement pour effet indésirable de ce qui rend impossible pour l'utilisateur de zoomer plus loin que le par maxzoom niveau avec la commande de zoom
J'ai calculé maxLat, minLat, maxLng et minLng à l'avance...