基本上,我有幾個朋友,我想:
- 看地圖
上 - 名單表變量範圍:回調函數中沒有看到
我的好友列表上的循環,對每次迭代我:
- 創建一個谷歌地圖標記
- 添加好友列表中的
第一個問題:對於標記我添加事件偵聽器,以便能夠顯示信息窗口。我使用標記的標題能夠檢索朋友的信息...這只是一個愚蠢的wokaround,因爲在檢索朋友的ajax方法中不知道「id」。這是我的第一個問題。我希望能夠使用title作爲真正的標題(而不是id),並以另一種方式設法在ajax回調中獲取id。
第二個問題對於列表,我爲每個朋友添加一個「li」條目,並在li.a鏈接上添加一個事件監聽器,以便能夠顯示好友的詳細信息。 「身份證」也沒有被看到。
這兩個問題是相同的familly。
下面是我所做的代碼。顯然有些問題,但無法弄清楚我需要在回調函數中更改訪問ID。
注意:我使用jQuery的手機爲HTML5應用程序。
for(j=0;j<friends.length;j++){
var lat = friends[j][1];
var long = friends[j][2];
var id = friends[j][3];
var latLng = new google.maps.LatLng(lat,long);
var marker = new google.maps.Marker({ position: latLng,
map: map,
title: id
});
// Add friends to list
$("#friend_list ul").append('<li><a id="details' + id + '" rel="external" data-transition="slide">' + id + '</a></li>');
// Add event handler when details:id is clicked
$('#details' + id).click(function(){
alert(id + ' clicked'); // DOES NOT WORK AS ID IS NOT KNOWN IN THIS METHOD
});
// Add listener on click action for marker created above
// I PASS THE TITLE OF SELF AS ID IS NOT KNOWN IN THIS METHOD
// IF I use: url: "/friend/" + id => ONLY THE LAST VALUE OF THE ID IS TAKEN INTO ACCOUNT
google.maps.event.addListener(marker, 'click', function() {
self = this;
$.ajax({
url: "/friend/" + self.title,
success: function(details){
var message = details["lastname"] + ' ' + details["firstname"];
var infowindow = new google.maps.InfoWindow(
{ content: message,
size: new google.maps.Size(50,50)
}
);
infowindow.open(map,self);
}
});
});
}
任何想法可能是錯誤的?
@mcnemesis我做訪問marker.title因爲我設置「的稱號,以獲得ID: ID「標記選項。事情是我想使用標記的標題除了id之外的其他名稱(例如名稱)。在標題中設置id是我發現能夠稍後獲取id的唯一方式,但這不是我所需要的。 – Luc 2011-04-27 22:46:23
啊我明白了。你可能想編輯你的問題,使其更清楚。 – dkarzon 2011-04-27 22:51:06
我更新了代碼。 – Luc 2011-04-28 12:17:46