2013-03-25 11 views
6

Ich habe einige Schwierigkeiten mit einer Google-Karte. Das Problem ist, dass nur ein kleiner Teil der Karte wird geladen, wie hier gezeigt:Google Maps API v3-Karte wird nicht vollständig geladen

enter image description here

Nachdem die Seite geladen wird, wenn ich den Browser auch nur die geringste Menge Größe ändern, dies bewirkt, dass die komplette Karte zu aktualisieren und Last richtig, wie hier gezeigt: enter image description here

hier ist mein Javascript-Code:

google.maps.event.addDomListener(window, 'load', initialize); 

$(document).ready(function(){        
    var $width = document.getElementById("propertysection").offsetWidth; 
    $('#map-canvas-2').width($width-28-175); 
    $('#map-canvas-2').height($width); 
    $('#myGridMap').height($width); 
}); 

function initialize() { 
    var map; 
    var propertyMap; 
    var marker; 
    var infowindow; 
     var myOptions = { 
      zoom: 6, 
      center:new google.maps.LatLng(50.7,-86.05), 
      mapTypeId: google.maps.MapTypeId.HYBRID 
     } 
     map = new google.maps.Map(document.getElementById("map-canvas-2"),myOptions);     
     infowindow = new google.maps.InfoWindow({ 
      content: 'Property Info', 
      position: new google.maps.LatLng(0, 0) 
     }); 
    } 

Kann jemand empfehlen, was das Problem sein könnte? Vielen Dank.

Antwort

5

Sie sollten die jquery ready-Methode nicht mit dem Fensterladeereignis mischen (siehe http://api.jquery.com/ready/).

Rufen Sie stattdessen initialize innerhalb Ihrer .ready-Funktion auf, oder platzieren Sie die Fenstergrößenanpassungsfunktionen in der Initialisierungsmethode selbst (vor dem Initialisieren der Zuordnung).

0

Ich benutze Bootstrap und ein Mega-Menü und ich löste es mit der offiziellen Google Maps API asynchronen Ladefunktion. https://developers.google.com/maps/documentation/javascript/tutorial#asynch

function initialize() { 

     var myLatLng = new google.maps.LatLng(37.4221147, -122.0867373); 

     var map_canvas = document.getElementById('map_canvas'); 

     var map_options = { 
      center: new google.maps.LatLng(37.4221147, -122.0867373), 
      zoom: 12, 
        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>Google Gate Bridge</b>' + 
      '<p>Mountain View, CA 94043, USA</p>'; 

     var infowindow = new google.maps.InfoWindow({ 
      content: contentString 
     }); 

     var marker = new google.maps.Marker({ 
      position: myLatLng, 
      map: map, 
     }); 

     google.maps.event.addListener(marker, 'click', function(){ 
      infowindow.open(map,marker); 
     }); 

    } 

    function loadScript() { 
     var script = document.createElement("script"); 
     script.type = "text/javascript"; 
     script.src = "https://maps.googleapis.com/maps/api/js?sensor=false&callback=initialize"; 
     document.body.appendChild(script); 
    } 

    var tab = document.getElementById('YourHtmlObjectID'); 
    YourHtmlObjectID.onmouseover = loadScript; 
    YourHtmlObjectID.onclick = loadScript; 
Verwandte Themen