Google Maps API v3 Laden Erst Nach Aktualisierung der Seite
Ich bin hantieren mit der Google Maps API für eine Webseite an der ich arbeite. Mein Problem ist jetzt, die Karte lädt, genau wie ich, wollen es aber erst nach aktualisieren der Seite. Wenn ich die Seite nicht aktualisieren, alles, was ich sehe, ist die Leinwand. Das problem bleibt, wenn ich die Seite verlassen und zu Ihr zurückkehren, so es scheint ein Problem mit dem Aufruf für die Karte zu initialize
.
Code:
<style>
#map_canvas {
width: 670px;
height: 400px;
background-color: #CCC;
}
</style>
<script src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script>
function initialize() {
var myLatLng = new google.maps.LatLng(31.247681, 121.449504);
var map_canvas = document.getElementById('map_canvas');
var map_options = {
center: new google.maps.LatLng(31.248195, 121.447431),
zoom: 16,
mapTypeControl: false,
panControl: false,
zoomControlOptions: {
position: google.maps.ControlPosition.LEFT_CENTER
},
streetViewControl: false,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
var map = new google.maps.Map(map_canvas, map_options);
var contentString =
'<b>Leung Gallery</b>' +
'<p>50 Moganshan Rd. Building 7, Unit 108, Shanghai</p>' +
'<p>上海普陀区莫干山路50号7号楼108室</p>';
var infowindow = new google.maps.InfoWindow({
content: contentString
});
var marker = new google.maps.Marker({
position: myLatLng,
map: map,
});
google.maps.event.trigger(map, 'resize');
google.maps.event.addListener(marker, 'click', function(){
infowindow.open(map,marker);
});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
Durchblättern früheren Fragen, ich habe nicht nichts gefunden, der auf mein problem genau aber ich habe gesehen, wie einige ähnliche Situationen, drehte sich um google.maps.event.addDomListener(window, 'load', initialize);
also ich denke, das könnte sein, wo das Problem ist. Jede Hilfe ist willkommen.
Edit: Hab schon in die richtige Richtung. Hinzufügen $(document).bind("projectLoadComplete", initialize);
nach google.maps.event.addDomListener(window, 'load', initialize);
behebt das Problem. Das Problem war, dass die Seiten nicht vollständig laden, wenn mit der navigation. Dieses Problem wird wahrscheinlich exklusiv für die Fracht gemeinsame Plattform.
Funktioniert perfekt...
könnte es vielleicht die Umgebung, ich bin mit diesem? ich Baue meine Webseite mit cargo-Kollektiv. nicht sicher, ob vielleicht, hat einen Einfluss darauf, warum die Karte erst initialisiert, NACHDEM die Seite aktualisieren.
k in ur-code, wo ist dieses script-code im head-Bereich oder nach Körper, wie in meinem code Geige..
Wenn jemand möchte, um einen Blick auf die Frage auf der hand, dass es auf dieser Seite
InformationsquelleAutor Darryl Leung | 2013-10-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es scheint gut zu funktionieren bei mir in Firefox aber nicht in Internet Explorer. Im IE der erste Blick auf die Seite die Karte nicht geladen wird. Ich bin mir ziemlich sicher, dass es hat zu tun mit der Art, wie die Seite aufgebaut wird. Wenn ich den Quelltext anzeigen im IE und tun eine Suche nach dem text "map_canvas" (das ist natürlich die id Ihres div-Element für die Karte anzuzeigen) ich bin nicht in der Lage zu finden, ein div oder ein beliebiges html-element mit der entsprechenden id innerhalb der raw-Seite Quelle aus irgendeinem Grund, und ich habe nicht wirklich herausgefunden, wie es wird Hinzugefügt, auf die Seite. Aber die div zeigen, nicht in der Entwickler-Werkzeuge als ein leeres xml-element: <div id="map_canvas" /> die bei der späteren Aktualisierung der Seite wird es ausgefüllt. Dies führt mich zu glauben, dass alles, was anderen code, den Sie haben, das muss Hinzugefügt werden, dass die div, um die Seite dynamisch ausgeführt wird, nachdem Sie Ihre map initialization script. Also, wenn Sie die Möglichkeit haben bewegen Sie Ihre Karte initialisieren Skript der beste Ort, um es sofort vor dem schließen </body> tag. Wenn es noch immer nicht richtig funktioniert, dann möchten Sie vielleicht, um zu versuchen und verzögern die Initialisierung Skript ausgeführt wird, sogar ein bisschen mehr, versuchen:
div
zum Beispiel) ich bin mit Cargo Collective, meine Plattform, also bin ich ziemlich begrenzt wie kann ich das ändern das HTML.InformationsquelleAutor astupidname
Nach mehreren Stunden erfolgloser Suche nach einer Lösung schließlich fand ich dies:
Ersetzen Sie einfach:
mit:
InformationsquelleAutor mmauzerr
Bekam schon in die richtige Richtung. Hinzufügen
$(document).bind("projectLoadComplete", initialize);
nachgoogle.maps.event.addDomListener(window, 'load', initialize);
behebt das Problem. Das Problem war, dass die Seiten nicht voll nachladen bei Verwendung der navigation. Dieses Problem wird wahrscheinlich exklusiv für die Fracht gemeinsame Plattform. Ich vermute, es ist eine Entscheidung, die Sie gemacht, um die Seite übergänge schneller.InformationsquelleAutor Darryl Leung
In API-version 3 rufen Sie
oder für version 2
Stellen Sie sicher, Sie rufen
google.maps.event.trigger(map, 'resize')
VOR aufrufenmap.fitBounds()
oder Sie erhalten unerwartete Ergebnisse.InformationsquelleAutor umer
Habe ich diese überprüft und seine arbeiten gut für mich. Bitte der Kasse die
fiddle
http://jsfiddle.net/aCx6L/InformationsquelleAutor Marikkani Chelladurai
Nach dem Versuch aus verschiedenen Anregungen und scheiterte, fand ich, dass das folgende funktioniert bei mir:
Sollten Sie diese erst kurz vor dem erstellen der Karte.
Ich weiß, das ist vielleicht nicht die beste Lösung, da es verursacht zusätzliche Last auf dem server.
Ich fand auch heraus, dass die Karte laden kann, richtig das erste mal um im Internet Explorer Den Rand, aber nicht in Google Chrome.
InformationsquelleAutor Chong Lip Phang