Fw: [問題] google api v3 infowindow

看板Ajax作者 (祈)時間11年前 (2014/01/29 00:06), 編輯推噓1(104)
留言5則, 1人參與, 最新討論串1/1
※ [本文轉錄自 Web_Design 看板 #1IvpAPaO ] 作者: DongFeng (祈) 看板: Web_Design 標題: [問題] google api v3 infowindow 時間: Tue Jan 28 12:31:18 2014 大家好, 小弟我在使用google api v3的infowindow遇到一點問題 marker點有多個, 每一個marker點我都搭配了一個infowindow要顯示該地點的資訊 但是實際呈現出來的卻全部是最後一個market的infowindow資訊 以下是我的程式碼 /* * waypoints是一串包含地點名稱/地點地址的字串 * 不同的地點使用,分隔,所以使用的時候我用split切了兩次得到地址 * 再用地址得到坐標去設定market,配對infowindow後丟進waypts中作後續處理 */ ------------------------------------------------------------------------- waypoints = data; if (waypoints){ var arrPoint = waypoints.split(","); //經過地點 for (var i = 0; i < arrPoint.length; i++) { address = arrPoint[i].split("/"); $.get("http://maps.googleapis.com/maps/api/geocode/json",{address: address[1],sensor:true},function(data){ marker[i] = new google.maps.Marker({ map: map, draggable: false, position: new google.maps.LatLng(data["results"][0] ["geometry"]["location"]["lat"], data["results"][0] ["geometry"] ["location"]["lng"]), title:"'"+data["results"][0]["formatted_address"]+"'" }); infowindow[i] = new google.maps.InfoWindow(); infowindow[i].setContent("設定資訊視窗內容"+i); google.maps.event.addListener(marker[i], 'click', function() { infowindow[i].open(map,this); }); waypts.push(marker[i]); }) } } ---------------------------------------------------------------------------- market跟infowindow我都有宣告為陣列使用i作索引,理論上監聽事件應該不會重疊,但 所有的infowindows的內容還是跟最後一個點的infowindow內容相同,還麻煩知道哪裡出 了問題的前輩能指點一下...先謝謝各位了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.35.104.91 ※ 發信站: 批踢踢實業坊(ptt.cc) ※ 轉錄者: DongFeng (175.111.59.28), 時間: 01/29/2014 00:06:57

01/29 14:46, , 1F
google.maps.event.addListener(marker[i]....
01/29 14:46, 1F

01/29 14:46, , 2F
這裡的i已經是最終值了
01/29 14:46, 2F

01/29 14:46, , 3F
function(data){ 這個fn是非同步執行的 執行時裡面的i
01/29 14:46, 3F

01/29 14:46, , 4F
都是最終值
01/29 14:46, 4F

01/29 14:46, , 5F
都是同一個i
01/29 14:46, 5F
文章代碼(AID): #1IvzMYIw (Ajax)
文章代碼(AID): #1IvzMYIw (Ajax)