2013-05-28 54 views
2

我想知道如何打開信息窗口,當我點擊一個標記,我認爲這是正確的,但不起作用。 這是腳本如何獲得infoWindow點擊標記

var map; 
function initialize() { 
    navigator.geolocation.getCurrentPosition(function(position){ 
     var latitude = position.coords.latitude; 
     var longitude = position.coords.longitude; 
     var coords = new google.maps.LatLng(latitude, longitude); 
     var mapOptions = { 
      disableDefaultUI: true, 
      center: coords, 
      mapTypeId: google.maps.MapTypeId.ROADMAP 
      }; 
     map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions); 
     placeMarker(); 
     var infowindow = new google.maps.InfoWindow(); 
     google.maps.event.addListener(marker, 'click', function() { 
      getComment(marker, infowindow); 
     }); 
}); 
} 
function getComment(marker, infowindow){ 
    var message = "Hello"; 
    infowindow.setContent(message); 
    infowindow.open(map, marker); 
} 
function placeMarker() { 
    //place some marker 
} 
google.maps.event.addDomListener(window, 'load', initialize); 

感謝您的建議!

+0

請參閱[infowindows文檔](https://developers.google.com/maps/documentation/javascript/overlays#InfoWindows)。我得到的'marker是未定義的',因爲你的代碼是張貼的(因爲它沒有定義)。 [這是一個如何使用infowindows製作多個標記的例子](http://www.geocodezip.com/v3_markers_infowindows.html) – geocodezip

回答

0

沒有在jsfiddle中運行它,但下面的代碼應該是工作。

你必須在你的函數placeMarker()之外定義var marker,就像你用infoWindow做的那樣。

var map; 
function initialize() { 
    navigator.geolocation.getCurrentPosition(function(position){ 
     var latitude = position.coords.latitude; 
     var longitude = position.coords.longitude; 
     var coords = new google.maps.LatLng(latitude, longitude); 
     var mapOptions = { 
      disableDefaultUI: true, 
      center: coords, 
      mapTypeId: google.maps.MapTypeId.ROADMAP 
      }; 
     map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions); 

     //position of marker = coords in this example 
     var marker = new google.maps.Marker({ 
      position: coords, 
      map: map, 
      title: "randomTitle", 
      zIndex: Math.round(latlng.lat()*-100000)<<5 
     }); 
     var infowindow = new google.maps.InfoWindow(); 
     google.maps.event.addListener(marker, 'click', function() { 
      getComment(marker, infowindow); 
     }); 
}); 
} 
function getComment(marker, infowindow){ 
    var message = "Hello"; 
    infowindow.setContent(message); 
    infowindow.open(map, marker); 
} 
google.maps.event.addDomListener(window, 'load', initialize); 
相關問題