2013-05-28 58 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); 
相关问题