2013-05-10 36 views
1

我是一個初學者編寫一個網頁,並希望在infowindows中顯示谷歌地圖中的一些標記。但是,我發現infowindow總是顯示最後記錄的信息。從前面的文章在stackoverflow參考,我發現這個問題很可能是由JavaScript中的常見封閉問題引起的,但我發現很難理解如何解決我的代碼中的問題。任何人都可以幫忙嗎?谷歌地圖API中循環標記的常見封閉問題

此外,我想問一個簡單的HTML問題。如果PDF名稱是編碼中顯示的變量,那麼如何創建href。非常感謝!!!

var ShowAll=function() { 
     var URL2="Show_all_trig.php"; 
     $.ajax({ 
      url: URL2, 
      type: "POST", 
      dataType: "json", 
      success: function(data){ 
       $.each(data, function(i, item) { 
        station_num = item.station_num; 
        trig_name = item.trig_name; 
        loc_x = item.loc_x; 
        loc_y = item.loc_y; 
        loc = new google.maps.LatLng(loc_x, loc_y);  
        var trigicon = 'images/Start2.png'; 
        marker = new google.maps.Marker({ 
        map: map, 
        position: loc, 
        icon: trigicon, 
        title: trig_name 
        }) 
        markersArray.push(marker) 
        html = "<b>Trig. Station Name: </b>" + trig_name + "<br/> <b>Station Number: </b>" + station_num + "<br/> <b>Sketch: </b>" +"<a target='_blank' href= 'summarysheet/'+ 'station_num +'.pdf'>station_num</a>"; 

        google.maps.event.addListener(marker, 'click', function() { 
         //alert (html); 
         infoWindow.setContent(html); 
         infoWindow.open(map, marker); 
         }); 
       }); 
      }, 

      error:function(xhr, ajaxOptions, thrownError){ 
       alert(xhr.status); 
       alert(thrownError); 
      } 

     }); 
} 

回答

0

這裏就是你正在尋找的技術:

(function(temp_html,temp_map,temp_marker) { 
    google.maps.event.addListener(temp_marker, 'click', function() { 
    infoWindow.setContent(temp_html); 
    infoWindow.open(temp_map, temp_marker); 
    }); 
}(html,map,marker)); 

總之,你在做什麼這裏(一)創建具有三個參數的匿名函數,(b)使htmlmap和作爲這些參數的值,並(c)立即執行匿名函數。該temp_變量被封閉在匿名函數和是不可見的周圍的代碼,故名"closure."

(在你的情況下,它看起來像map是一個全局變量,你不真的需要傳遞到但這並不是件壞事)

+0

感謝您的評論...但我真的很抱歉,我不太瞭解如何實施您的編碼。 – 2013-05-10 14:26:36

+0

只需使用我的代碼示例替換當前的'google.maps.event.addListener'調用,並讓我知道它是如何工作的。 – Blazemonger 2013-05-10 14:27:26

+0

哦..謝謝..它的作品! 還有一個問題...... 如果我想用變量'trig_name'作爲PDF文件的名稱來配置'html'參數。我該怎麼做... 非常感謝! – 2013-05-10 14:30:53