0

ユーザーが自分の場所にズームできるようにするボタンを地図上に設定しようとしています。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() が返すものをログに記録しようとすると、オブジェクトを取得するだけで、ユーザーの場所が見つかったかどうかは明確ではありません.

4

1 に答える 1

1

Leaflet の locate() メソッドは、地理位置情報呼び出しの状態ではなく、Map オブジェクトのみを返します。ただし、位置情報を試行した後、Leaflet は次の 2 つのイベントのいずれかを起動します。

  • 場所が見つかりました
  • 位置エラー

これらのイベントを使用した例をhttp://jsfiddle.net/XwbsU/5/にアップロードしました。

地理位置情報の呼び出しが成功したかどうかを判断するために、これらの各イベントに登録したことがわかります。

それが役立つことを願っています。

于 2012-07-26T16:06:04.883 に答える