Hier ist mein Javascript-Code:navigator.geolocation.getCurrentPosition/watchPosition funktioniert nicht in Android 6.0
function getLocation() {
//navigator.geolocation.getCurrentPosition(getCoor, errorCoor, {maximumAge:60000, timeout:30000, enableHighAccuracy:true});
var mobile =jQuery.browser.mobile;
var deviceAgent = navigator.userAgent.toLowerCase();
var agentID = deviceAgent.match(/(iphone|ipod|ipad)/);
if(mobile){
watchLocation(function(coords) {
var latlon = coords.latitude + ',' + coords.longitude;
//some stuff
}, function() {
alert("error");
});
} else {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
} else {
alert("error");
}
}
}
function watchLocation(successCallback, errorCallback) {
successCallback = successCallback || function(){};
errorCallback = errorCallback || function(){};
// Try HTML5-spec geolocation.
var geolocation = navigator.geolocation;
if (geolocation) {
// We have a real geolocation service.
try {
function handleSuccess(position) {
alert("position:"+position.coords);
successCallback(position.coords);
}
geolocation.watchPosition(handleSuccess, errorCallback, {
enableHighAccuracy: true,
maximumAge: 5000 // 5 sec.
});
} catch (err) {
errorCallback();
}
} else {
errorCallback();
}
}
ich beide getCurrentPosition
und watchPosition
versucht haben.
Es erreicht errorCalback()
Methode, wenn die Steuerung geolocation.watchPosition
Zeile erreicht.
Ich teste in Motorola G 2nd Gen
mit Android 6
und Google chrome browser
und opera mini
.
Update 1: Wenn ich eine Warnung irrtümlich Callback-Funktion habe ich error:1; message:Only Secure origins are allowed(see:
link).
navigator.geolocation.getCurrentPosition(showPosition, function(e)
{ alert(e); //alerts error:1; message:Only Secure origins are allowed(see: )
console.error(e);
})
Update 2: Mit Hilfe von g4s8 ich in der Lage bin findout, dass der Fehler aufgrund der unsicheren URL ist. d. h. nur Zugriff mit http
anstelle von https
. Aber dann habe ich auch das im Browser umgangen, indem ich auf die erweiterte Schaltfläche geklickt habe. Aber es wird zur Eingabe aufgefordert , die ich nicht möchte..ist es eine Möglichkeit, Zugriff auf den Speicherort ohne Aufforderung?
Haben Sie versucht, der Methode 'getCurrentPosition' den zweiten Parameter (Fehlerrückruf) hinzuzufügen? 'navigator.geolocation.getCurrentPosition (showPosition, Funktion (e) {console.error (e);})' – g4s8
ja ... Sie können die zweite Zeile sehen, die kommentiert ist ... 'errorCoor' ist diese Callback-Funktion .. –
Können Sie einen Fehler auf der Konsole ausgeben und eine Fehlermeldung zu dieser Frage hinzufügen? Es kann nützliche Informationen enthalten. z.B. 'PositionError {code: 1, message:" Benutzer verweigert Geolocation "}' – g4s8