Google Maps API - 打开信息窗口始终相同

时间:2012-08-10 02:03:26

标签: javascript jquery

我可以设置制作者(他们出现在地图上)但是infowindow总是一样的。我已经尝试为infowindow内容以及制作者制作一个数组,但这也没有用。

  $(function() {
    map = $('#map_canvas');
    map.gmap().bind('init', function () {
      // Process the Microdata for each Event into an object.

      $.ajax({
        type: "GET",
        dataType: "jsonp",
        cache: false,
        url: "API",
        success: function(data) {
            for (var i = 0; i < 301; i++) {

                  //details overlay
                   var eventDetails = '';
                    eventDetails += '<div class="iw">';
                    eventDetails += '<img src="'+ data.data[i].images.low_resolution.url+'"></img>';
                    eventDetails += '<h3>'+ data.data[i].tags + '</h3>';
                    eventDetails += '</div>';

                     //set location
                    var lat = data.data[i].location.latitude;
                    var lng = data.data[i].location.longitude;
                    var latlng = new google.maps.LatLng(lat, lng);

                    //marker
                    var markerOptions = {
                      'bounds':true,
                      'position': latlng,
                      'icon': icon,
                    };

                    //add marker and set overlay
                    map.gmap('addMarker', markerOptions).click( function() {
                      map.gmap('openInfoWindow', { 'content': eventDetails }, this ); 
                    });
            }           
        }
      });
    });
  });

2 个答案:

答案 0 :(得分:0)

根据我的经验:

success: function(data) {

      $.each(data.data, function (i) {

        //details overlay
        var eventDetails = '';
        eventDetails += '<div class="iw">';
        eventDetails += '<img src="'+ data.data[i].images.low_resolution.url+'"></img>';
        eventDetails += '<h3>'+ data.data[i].tags + '</h3>';
        eventDetails += '</div>';

        //set location
        var lat = data.data[i].location.latitude;
        var lng = data.data[i].location.longitude;
        var latlng = new google.maps.LatLng(lat, lng);

        //marker
         var markerOptions = {
           'bounds':true,
           'position': latlng,
           'icon': icon,
         };

          //add marker and set overlay
          map.gmap('addMarker', markerOptions).click( function() {
              map.gmap('openInfoWindow', { 'content': eventDetails }, this ); 
          });
      });          
 }

这样可行。

答案 1 :(得分:0)

不知道gmap,但它看起来像变量范围问题,如果其他一切都没问题可以解决如下

//add marker and set overlay
(function(mOpt, eDetails){
    map.gmap('addMarker', mOpt).click( function() {
        map.gmap('openInfoWindow', { 'content': eDetails }, this ); 
    });
})(markerOptions, eventDetails);