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 将在尝试地理定位后触发两个事件之一:

  • 找到的位置
  • 位置错误

我在以下位置上传了一个使用这些事件的示例:http: //jsfiddle.net/XwbsU/5/

你可以看到我已经注册了这些事件,以确定地理定位调用是否成功。

希望有帮助。

于 2012-07-26T16:06:04.883 回答