2017-12-18 13 views
0

Unten ist meine jquery code, ich render google map auf einem modalen popup mit teilansicht.google maps nicht auf modale popup

Karte nicht selbst rendern, es rendern, wenn ich die Größe des Browserfensters ändere oder wenn ich meinen Browser überprüfe (dasselbe gilt für die Fenstergröße).

Auch wenn es nicht auf Mitte wie Breitengrad-Längengrad eingestellt ist.

Ich möchte Karte dynamisch basierend auf Breite und Länge aus verborgenen Feldern gesetzt. Momentan passiere ich Latitude = 30.704648600 und Longitude = 76.717872600.

Ich weiß nicht, was fehlt, bitte helfen, TIA.

jQuery: -

$(document).ready(function() { 
     var currLoc; 
     if ($('#Latitude').val().length > 0 && $('#Longitude').val().length > 0) 
      initialize($('#Latitude').val(), $('#Longitude').val()); 
    }); 

    function initialize(Latitude, Longitude) { 
     var latlng = new google.maps.LatLng(Latitude, Longitude); 
     var map = new google.maps.Map(document.getElementById('map_'), { 
      center: latlng, 
      zoom: 13 
     }); 
     var marker = new google.maps.Marker({ 
      map: map, 
      position: latlng, 
      draggable: false, 
      //anchorPoint: new google.maps.Point(0, -29) 
     }); 
     map.setCenter(new google.maps.LatLng(Latitude, Longitude)); 

     var infowindow = new google.maps.InfoWindow(); 
     currLoc= $('#lastLocation').text(); 
     google.maps.event.addListener(marker, 'click', function() { 
      var iwContent = '<div id="iw_container">' + 
      '<div class="iw_title"><b>Last Location</b> : <span class="lastLoc">' + GetAddress(Latitude, Longitude) + '<span></div></div>';    
      infowindow.setContent(iwContent);    
      infowindow.open(map, marker); 
     }); 
    } 

    function GetAddress(Latitude, Longitude) { 
     var LastLatLong = []; 
     LastLatLong.push([Latitude, Longitude]); 
     var latlngArray_ = LastLatLong[0]; 
     var latlngset_ = new google.maps.LatLng(latlngArray_[0], latlngArray_[1]); 
     var geocoder = new google.maps.Geocoder(); 
     geocoder.geocode({ 'latLng': latlngset_ }, function (results, status) { 
      if (status == google.maps.GeocoderStatus.OK) { 
       if (results[0]) { 
        //currLoc= results[0].formatted_address; 
        if ($('.lastLoc').length > 0) { 
         debugger; 
         $('.lastLoc').text(results[0].formatted_address); 
        } 
       } 
      } 
     }); 
    } 
+1

Wahrscheinlich initialisieren Sie Ihre Karte, wenn die div keine Größe haben (es Anzeige keine haben). Initialisieren Sie es, wenn das Popup geöffnet wird, oder starten Sie -at page load- mit dem geöffneten Popup und verstecken Sie es gleich nach der Initialisierung. Dazu müssen Sie am Anfang die Opazität 0 verwenden und nach dem Ausblenden mit der Anzeige none auf 1 setzen. –

Antwort

0

bekam ich die Antwort, kann sie durch erste Karte geschehe Ereignis Resize Auslösung, dann seine setCenter Eigenschaft verwenden.

Ich änderte meine initialisieren Funktion jetzt funktioniert es gut.

function initialize(Latitude, Longitude) { 
     var latlng = new google.maps.LatLng(Latitude, Longitude); 
     var map = new google.maps.Map(document.getElementById('map_'), { 
      center: latlng, 
      zoom: 13 
     }); 
     var marker = new google.maps.Marker({ 
      map: map, 
      position: latlng, 
      draggable: false, 
      //anchorPoint: new google.maps.Point(0, -29) 
     }); 
     map.setCenter(new google.maps.LatLng(Latitude, Longitude)); 

     var infowindow = new google.maps.InfoWindow(); 
     currLoc= $('#lastLocation').text(); 
     google.maps.event.addListener(marker, 'click', function() { 
      var iwContent = '<div id="iw_container">' + 
      '<div class="iw_title"><b>Last Location</b> : <span class="lastLoc">' + GetAddress(Latitude, Longitude) + '<span></div></div>';    
      infowindow.setContent(iwContent);    
      infowindow.open(map, marker); 
     }); 
    setTimeout(function() { 
      google.maps.event.trigger(map, "resize"); 
      map.setCenter(new google.maps.LatLng(Latitude, Longitude)); 
     }, 300); 
    } 
Verwandte Themen