Geolocation适用于iPhone和某些Android设备。似乎问题出在较新的Android设备上。我已经阅读了你需要高精度设置为真的地方,但我似乎可以让它工作。
我可能会在错误的地方添加高精度。这是没有高精度的代码。
function autofill(type) {
if (type == "from") {
if (document.forms[0].exfrom.value == "gps") {
var startPos;
navigator.geolocation.getCurrentPosition(
function (position) {
startPos = position;
var locationcor = startPos.coords.latitude + " " + startPos.coords.longitude;
var lat = position.coords.latitude;
var lng = position.coords.longitude;
document.forms[0].from.value = locationcor;
var geocoder;
initialize();
codeLatLng();
function initialize() {
geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(lat, lng);
codeLatLng(function (addr) {
document.forms[0].from.value = addr;
});
}
function codeLatLng(callback) {
var latlng = new google.maps.LatLng(lat, lng);
if (geocoder) {
geocoder.geocode({
'latLng': latlng
}, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[0]) {
callback(results[0].formatted_address);
} else {
document.forms[0].from.value = locationcor;
}
} else {
document.forms[0].from.value = locationcor;
}
});
}
}
}, function (error) {
alert("Error occurred. Error code: " + error.code);
// error.code can be:
// 0: unknown error
// 1: permission denied
// 2: position unavailable (error response from locaton provider)
// 3: timed out
});
} else {
document.forms[0].from.value = document.forms[0].exfrom.value;
}
} else {
document.forms[0].to.value = document.forms[0].exto.value;
}
}