Failed to get geolocation in android emulator

I am making a small example application that displays latitude and longitude in a popup when I click on a button here is my code

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>BlankCordovaApp1</title>

    <link href="css/index.css" rel="stylesheet" />

    <script src="cordova.js"></script>
    <script src="scripts/platformOverrides.js"></script>
    <script src="scripts/index.js"></script>

    <script type="text/javascript" charset="utf-8">
        var alertmsg = function (position) {
            var msg = 'Latitude: ' + position.coords.latitude + '<br />' +
                'Longitude: ' + position.coords.longitude + '<br />'
            navigator.notification.alert(msg);
        }
        function geoLocation() {
            navigator.geolocation.getCurrentPosition(alertmsg)
        }
    </script>
</head>
<body>
    <input type="button" id="btnClick" onclick="geoLocation()" value="click" />
</body>
</html>

      

It works in Ripple emulator But it doesn't work in Android and Genymotion emulator

+3


source to share


2 answers


I figured out the problem. If I use this code it works fine

navigator.geolocation.getCurrentPosition(alertmsg, onError, { timeout: 30000, enableHighAccuracy: true });

      



It works in all emulators (Ripple, Android, Genymotion)

+1


source


I'm using Visual Studio 13 with baseline smartphone support and it was painful. Adding a timeout parameter and enableHighAccuracy

always throws a handler onError

without which they do not return.

So this is a good answer:



//Android Emulator safe version
function getGpsCordinates(callback) {
    if ("geolocation" in navigator) {                  
        navigator.geolocation.getCurrentPosition(
            //Success
            function (position) {
                console.log("GPS: Success");
                callback(position);
            },
            //Error
            function (error) {
                console.log("GPS: Error");
                var position = {
                  coords: {
                      longitude: 0,
                      latitude: 0,
                      speed: 0
                  }
              };
              callback(position);
            },
            { timeout: 7000, enableHighAccuracy: true });
    } else {
        var position = {
            coords: {
                longitude: 0,
                latitude: 0,
                speed: 0
            }
        };
        console.log("GPS: Not Supported");
        callback(position);
    }
    console.log("GPS: Continued");
}

getGpsCordinates(function(mycallback) {
  alert(mycallback.coords.latitude);
});

      

Pen code version

+1


source







All Articles