Ich wechsle von v2 zu v3 Google Maps API und habe ein Problem mit der gMap.getBounds()
Funktion.
Ich muss die Grenzen meiner Karte nach ihrer Initialisierung ermitteln.
Hier ist mein Javascript-Code:
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());
}
);
Jetzt macht es mich darauf aufmerksam gMap.getBounds()
es nicht definiert ist.
Ich habe versucht, getBounds-Werte im Klickereignis abzurufen, und es funktioniert gut für mich, aber ich kann im Ladekartenereignis nicht dieselben Ergebnisse erzielen.
GetBounds funktioniert auch einwandfrei, während das Dokument in Google Maps API v2 geladen wird, in V3 schlägt es jedoch fehl.
Könnten Sie mir bitte helfen, dieses Problem zu lösen?
quelle
Es sollte funktionieren, zumindest gemäß der Dokumentation für getBounds (). Dennoch:
Sehen Sie, wie es hier funktioniert .
quelle
idle
Ereignis vor demtilesloaded
Ereignis ausgelöst wird ? Für mich wird dietilesloaded
Veranstaltung ständig vor deridle
Veranstaltung ausgelöst.Ich habe gesagt, Salmans Lösung ist besser, weil das
idle
Ereignis früher als das aufgerufen wirdtilesloaded
, da es darauf wartet, dass alle Kacheln geladen werden. Aber bei näherer Betrachtung scheintbounds_changed
es noch früher aufgerufen zu werden und es macht auch mehr Sinn, da Sie nach den Grenzen suchen, oder? :) :)Meine Lösung wäre also:
quelle
bounds_changed
hätte es nicht funktioniert, dagetBounds()
die Kacheln geladen werden mussten. +1 für den Vorschlag. Ich werde meine Antwort aktualisieren.In anderen Kommentaren hier wird empfohlen, das Ereignis "bounds_changed" anstelle von "idle" zu verwenden, dem ich zustimme. Sicherlich unter IE8, das auf meinem Entwicklungscomputer zumindest "idle" vor "bounds_changed" auslöst und mir auf getBounds einen Verweis auf null hinterlässt.
Das Ereignis "bounds_changed" wird jedoch kontinuierlich ausgelöst, wenn Sie die Karte ziehen. Wenn Sie dieses Ereignis zum Laden von Markern verwenden möchten, wird es Ihren Webserver stark belasten.
Meine Multi-Browser-Lösung für dieses Problem:
quelle
Nun, ich bin mir nicht sicher, ob ich zu spät bin, aber hier ist meine Lösung mit dem Plugin gmaps.js :
quelle