0

I'm very new to javascript (read: today). I have the following to use HTML5 geocoding:

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;
    });
}

Alert navigator works as expected.

Alert geocode causes an error: Uncaught TypeError: Cannot read property 'lat' of undefined.

I thought adding return in front of navigator.geolocation.getCurrentPosition might work, but it made no difference.

I'm sure I'm doing something obviously wrong here...

UPDATE: Changed to this, but now I get two alerts. The first has undefined values, the second has the correct values:

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));
}
StringsOnFire
  • 2,726
  • 5
  • 28
  • 50

0 Answers0