L'Api Google Maps v3 - getBounds est pas défini
Je suis passer de la v2 à la v3 de l'api google maps et eu un problème avec gMap.getBounds()
fonction.
J'ai besoin d'obtenir les limites de ma carte après son initialisation.
Voici mon code javascript:
var gMap;
$(document).ready(
function() {
var latlng = new google.maps.LatLng(55.755327, 37.622166);
var myOptions = {
zoom: 12,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
gMap = new google.maps.Map(document.getElementById("GoogleMapControl"), myOptions);
alert(gMap.getBounds());
}
);
Alors maintenant, il me prévient que gMap.getBounds()
est pas défini.
J'ai essayé de m'getBounds valeurs dans l'événement click et il fonctionne très bien pour moi, mais je ne peux pas obtenir les mêmes résultats en charge des évènements de la carte.
Aussi getBounds fonctionne très bien si le document est en cours de chargement dans Google Maps API v2, mais il échoue dans V3.
Pourriez-vous svp m'aider à résoudre ce problème?
Vous devez vous connecter pour publier un commentaire.
Dans les premiers jours de la v3 de l'API, le
getBounds()
méthode requise les tuiles de carte d'avoir fini de se charger, pour le retour des résultats corrects. Mais maintenant, il semble que vous pouvez écouterbounds_changed
événement, qui est au même avant latilesloaded
événement:Il convient de travail, au moins selon la documentation de getBounds(). Néanmoins:
Le voir fonctionner ici.
idle
événement est déclenché avant latilesloaded
événement? Pour moi, letilesloaded
événement en permanence les feux avant de laidle
événement.Je disais Salman solution est meilleure parce que les
idle
événement est appelé plus tôt que latilesloaded
, car il attend que toutes les tuiles pour être chargé. Mais à regarder de plus près, il semblebounds_changed
s'appelle même plus tôt, et il a également fait plus de sens, puisque vous êtes à la recherche pour les limites, non? 🙂Donc ma solution serait:
bounds_changed
n'aurait pas travaillé, commegetBounds()
nécessaire les tuiles à être chargé. +1 pour le proposer. Je vais mettre à jour ma réponse.Dans d'autres commentaires ici, il est conseillé d'utiliser le "bounds_changed" événement sur "inactif", qui je suis d'accord avec. Certainement sous IE8 qui déclenche le "ralenti" avant "bounds_changed" sur ma machine de dev au moins, me laissant avec une référence à null dans getBounds.
La "bounds_changed" de l'événement, cependant, sera déclenchée en permanence lorsque vous faites glisser la carte. En effet, si vous souhaitez utiliser cet événement pour lancer le chargement des marqueurs, il sera lourd sur votre serveur.
Mon multi navigateur solution à ce problème:
Bien, je ne suis pas sûr si je suis en retard, mais voici ma solution à l'aide gmaps.js plugin: