2016-04-08 14 views
-1

Ich versuche zu schließen, alte Infowindow und öffnen neue Infofenster (oder ersetzen Inhalt in diesem Infowindow), aber ich kann es nicht zur Arbeit. Ich versuche es zu googeln. Wenn ich es jetzt versuche, sagt Google Chrome Browser Developer Tool-Konsole "Uncaught TypeError: Kann nicht lesen 'schließen' von undefined".Google Maps API öffnen neue Infowindow durch Klicken auf Link innerhalb Infowindow

<script> 
var map; 
var marker; 
var markerInfoWindow; 

function intMap() { 

    var map = new google.maps.Map(document.getElementById('map'), { 
     zoom: 10, 
     center: new google.maps.LatLng(60.3000216, 24.944929), 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }); 

    // Create a new marker 
    var marker = new google.maps.Marker({ draggable: true, icon: 'images/new_marker.png' }); 
    var markerInfoWindow = new google.maps.InfoWindow(); 

    google.maps.event.addListener(map, 'click', function(event) { 
     marker.setPosition(event.latLng); 
     marker.setMap(map); 

     var contentString = "<a href='#' onclick='openNew();'>Click here to open new infowindow!</a>"; 
     var markerInfoWindow = new google.maps.InfoWindow({ 
      content: contentString 
     });    
     markerInfoWindow.open(map, marker); 
     marker.addListener('click', function() { 
      markerInfoWindow.open(map, marker); 
     }); 
    }); 
}   
    google.maps.event.addDomListener(window, "load", intMap); 

    function openNew() { 
     markerInfoWindow.close(); 
     var contentString = "Open this infowind when clicked link"; 
     var markerInfoWindowNew = new google.maps.InfoWindow({ 
      content: contentString 
     }); 
    } 
</script> 

Antwort

1

Sie haben Problem mit Rahmen variabler markerInfoWindow - in Ihrem Code Sie neue lokale erstellen, welche externen eine

var map; 
var marker; 
var markerInfoWindow; 

function intMap() { 

    map = new google.maps.Map(document.getElementById('map'), { 
     zoom: 10, 
     center: new google.maps.LatLng(60.3000216, 24.944929), 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }); 

    // Create a new marker 
    marker = new google.maps.Marker({ 
     draggable: true, 
     icon: 'images/new_marker.png' 
    }); 
    markerInfoWindow = new google.maps.InfoWindow(); 

    google.maps.event.addListener(map, 'click', function(event) { 
     marker.setPosition(event.latLng); 
     marker.setMap(map); 

     var contentString = "<a href='#' onclick='openNew();'>Click here to open new infowindow!</a>"; 
     markerInfoWindow = new google.maps.InfoWindow({ 
      content: contentString 
     }); 
     markerInfoWindow.open(map, marker); 
     marker.addListener('click', function() { 
      markerInfoWindow.open(map, marker); 
     }); 
    }); 
} 
google.maps.event.addDomListener(window, "load", intMap); 

function openNew() { 
    markerInfoWindow.close(); 
    var contentString = "Open this infowind when clicked link"; 
    markerInfoWindow = new google.maps.InfoWindow({ 
     content: contentString 
    }); 
    markerInfoWindow.open(map, marker); 
} 
+0

Dank versteckt! Jetzt kann ich das 'markerInfoWindow' schließen, aber es ist nicht neu 'markerInfoWindowNew' infowindow geöffnet. – user2885442

+0

@ user2885442 Checkout aktualisierten Code. 1) Sie haben vergessen, das Infofenster zu öffnen: '' 'markerInfoWindow.open (map, marker);' ''; 2) wieder, '' 'map''' wurde im' '' intMap''' schattiert. Daher war externe '' 'map''' Instanz immer' '' null''' – ruX

Verwandte Themen