私は、タバコ ショップ ファインダー Windows 8.1 ストア アプリケーションに取り組んでいます。主なアイデアは、ユーザーがアプリを開くと、マップが自分の位置にズームインして表示されるということです。このマップでは、たばこ店が画鋲として表示されます。これらのショップのデータは、次の構造を持つ json ファイルに保存されます。
{
addr: Some street 12,
lng: longitude,
lat: lattitude,
open: {10:00-23:00, 20:00-22:00, and 5 more}
}
店舗の住所、経度、緯度、および営業時間が含まれています。
これは、画鋲を地図上の正しい位置に配置するために使用する JavaScript コードです。
var pins = [];
$.getJSON(dbURL, function (response) {
pins = response;
$.each(pins, function (i, item) {
var _location = new Microsoft.Maps.Location(item.lat, item.lng);
var pin = new Microsoft.Maps.Pushpin(_location, { description: i, icon: markerImgURL, height: markerImgHeight, width: markerImgWidth, draggable: false });
Microsoft.Maps.Events.addHandler(pin, 'click', showDetails);
map.entities.push(pin);
});
});
各ピンにクリック ハンドラーを追加したので、ユーザーがピンをクリック (またはタッチ) すると、そのピンに関する詳細情報がウィンドウに表示されます。
これは私のshowDetails()
機能です:
function showDetails() {
var details = $("#details");
details.animate({
"right": parseInt(details.css("right")) == 0
? -1 * details.innerWidth() - 5
: 0
}, 500)
}
私の問題は、この関数から個々のピンのデータにアクセスする方法が本当にわからないことです。ピンの説明として ID を追加しました。これは、完全なデータが保存されている「ピン」配列を参照しますが、ループshowDetails(i)
内のように関数を呼び出すと、起動時にアプリケーションがフリーズします。$.each()
tl;dr: 外部関数に ID を渡さずに、外部関数から画鋲の説明プロパティにアクセスするにはどうすればよいですか?
ありがとう!