を見ていない基本的に、私は私がしたいことを、いくつかの友人があります
を - 地図
で見る - リストの表の変数のスコープ:コールバック関数内で
私は、フレンドリスト上のループを持っています各反復I:
- Googleマップのマーカー
を作成 - リストに
最初の問題友人を追加します。マーカーのために私は、情報ウィンドウを表示することができるようにイベントリスナーを追加します。私は友人の情報を取得するためにマーカーのタイトルを使用しています... "id"は友人を取得するajaxメソッドの中で知られていないので、それは愚かなwokaroundです。これが私の最初の問題です。私は実際のタイトル(IDではない)のタイトルを使用し、別の方法でajaxコールバック内のIDを取得することができるようにしたいと思います。
第2問題リストのために、友人の詳細を表示できるように、各友達に「li」エントリを追加し、li.aリンクにイベントリスナーを追加します。 "id"はどちらにも見られません。
これらの2つの問題は同じファミリのものです。
以下は私が行ったコードです。明らかに何か間違っていますが、コールバック関数内のアクセスIDに変更する必要があるものはわかりません。
注:jquery mobileを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私は、「タイトルを設定するためのIDを取得するには、アクセスmarker.titleの操作を行います。 id "をマーカーオプションに追加します。物事はid(名前のようなもの)以外の何かのためにマーカーのタイトルを使用したいと思っています。後でIDを取得するために見つけた唯一の方法はタイトルのIDを設定することですが、これは私が必要とするものではありません。 – Luc
ああ私はそれを得る。そのことをより明確にするために質問を編集したいかもしれません。 – dkarzon
コードを更新しました。 – Luc