为什么JS中的HTML5 Geocoding功能不起作用?

时间:2015-08-28 14:02:59

标签: javascript html5 geolocation navigator

我对javascript很新(阅读:今天)。我有以下使用HTML5地理编码:

function geocode() {
    var geocoder = new google.maps.Geocoder();
    if (navigator.geolocation) {
        var pos = geocodeWithHTML5();
        alert('geocode - Lat: ' + pos.lat + ', Lng: ' + pos.lng);
    }
}

function geocodeWithHTML5() {
    navigator.geolocation.getCurrentPosition(function(position) {
        var latlng = {
            lat: parseFloat(position.coords.latitude),
            lng: parseFloat(position.coords.longitude)
        };
        alert('navigator - Lat: ' + latlng.lat + ', Lng: ' + latlng.lng);
        return latlng;
    }, function() {
        return false;
    });
}

警报navigator按预期工作。

警告geocode会导致错误:Uncaught TypeError: Cannot read property 'lat' of undefined

我认为在return前添加navigator.geolocation.getCurrentPosition可能有用,但没有任何区别。

我确定我在这里做了一些明显错误的事情......

更新:已更改为此,但现在我收到两条提醒。第一个具有undefined值,第二个具有正确的值:

function geocode() {
    var geocoder = new google.maps.Geocoder();
    // If browser supports HTML5 GeoLocation
    if (navigator.geolocation) {
        geocodeWithHTML5(function(pos){
            alert('navigator - Lat: ' + pos.lat + ', Lng: ' + pos.lng);
        });
    } else {
        // Alternative GeoLocation
    }
}

function geocodeWithHTML5(fn) {
    navigator.geolocation.getCurrentPosition(function(position) {
        var pos = {
            lat: parseFloat(position.coords.latitude),
            lng: parseFloat(position.coords.longitude)
        };
        fn(pos);
    }, fn(false));
}

0 个答案:

没有答案