ユーザーが自分の場所にズームできるようにするボタンを地図上に設定しようとしています。Leaflet マッピング ライブラリ ( leaflet.cloudmade.com ) を使用しています。
locate() メソッドはうまく機能しますが、ブラウザーが場所を返した場合にボタンを変更したいので、ユーザーが実際に自分の場所を共有したことを確認したいと思います。これが私が使用しようとしてきたコードです:
function locateUser() {
try {
this.map.locate({setView: true});
} catch(err) {
alert("Couldn't find your location.");
return false;
}
return true;
}
$("document").ready(function() {
var map = null;
initmap(); // This is the function that displays the map.
// Here is where I need to check whether the user was located.
// If he is located I want to switch the button to one that will
// reset the view.
var is_located = 0;
$("#myLocation").click(function() {
if (is_located == 0) {
if (locateUser()){
is_located = 1;
$(this).attr('value', 'WILMINGTON');
};
} else if (is_located == 1) {
$(this).attr('value', 'MY LOCATION');
is_located = 0;
};
});
});
リーフレットのドキュメントによると、locate() メソッドは locationfound イベントまたは locationerror イベントのいずれかを返しますが、locate() が返すものをログに記録しようとすると、オブジェクトを取得するだけで、ユーザーの場所が見つかったかどうかは明確ではありません.