我一直在尝试在我的一个项目中使用 Google Maps API,问题是即使在允许位置访问后,它也没有向我显示当前的确切位置(这是一个网站项目(。我的意思是它输出位置,但就像200米外。当我尝试在同一设备上使用谷歌地图的网络版本时,它向我显示当前位置+-20米。我们试图找到确切的经度和纬度。这是JavaScript
function getCurrentLocation() {
var options = {
enableHighAccuracy: true,
timeout: 5000,
maximumAge: 0
}
}
// Try HTML5 geolocation.
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
var pos = {
lat: position.coords.latitude,
lng: position.coords.longitude
};
var lat_and_long = pos.lat+","+pos.lng;
$("#geocomplete").geocomplete("find", lat_and_long);
}
}
$("#geocomplete").bind("geocode:dragged", function(event, latLng){
$("input[name=lat]").val(pos.lat());
$("input[name=lng]").val(pos.lng());
$("#reset").show();
console.log(latLng);
});
console.log(pos);
function handleLocationError(browserHasGeolocation, infoWindow, pos) {
infoWindow.setPosition(pos);
infoWindow.setContent(browserHasGeolocation ?
'Error: The Geolocation service failed.' :
'Error: Your browser doesn't support geolocation.');
infoWindow.open(map);
}
我们将以下 Google API 与 jQuery 地理编码和位置自动完成插件 (1.7.0( 一起使用https://maps.googleapis.com/maps/api/js?libraries=places&key=AIzaSyDJ2bLO-XXXXXXX"
Google 地图 API 根据以下来源提供位置:
-
GPS:通过使用卫星(长达20米左右(为您提供位置,有时它不准确,例如恶劣的天气条件,地下或如果您在建筑物内。
-
Wi-Fi:Wi-Fi网络 IP 地址的位置。
手机信号塔 :您与移动蜂窝网络信号塔的连接可以精确到几千米。
桌面浏览器 :虽然浏览桌面浏览器,如Mozilla Firefox和谷歌浏览器的位置依赖于本地网络信息,信号,如您的计算机IP address
。 您的浏览器会要求您分享您的位置,如果您允许分享,那么有关附近无线接入点的信息,IP address
将分享给Google位置服务,以获取您的位置估计。 位置的准确性因位置而异。
移动浏览器:像Chrome,Safari,Opera这样的移动浏览器使用GPS sensors
而不是WiFi网络。
现在enableHighAccuracy
选项属性提供了一个提示,表明应用程序希望获得最佳结果。 这可能会导致响应时间变慢或功耗增加。
根据W3C的地理位置API文档(https://w3c.github.io/geolocation-api/#high-accuracy(No guarantee is given that the API returns the device's actual location
。
地理位置 API 定义了位置的高级接口 仅与托管 实现,例如纬度和经度。API 本身是 与基础位置信息源无关。常见 位置信息来源包括全球定位系统 (GPS( 和从网络信号(如 IP 地址(推断的位置, RFID、WiFi 和蓝牙 MAC 地址以及 GSM/CDMA 小区 ID 作为用户输入。不保证 API 返回设备的 实际位置。
没有办法得到确切的位置。每个位置方法都包含错误。GPS是最准确的,但误差仍在几米范围内。
在 JavaScript 中,你最好的选择是使用
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
var pos = {
lat: position.coords.latitude,
lng: position.coords.longitude
};
// ...
}
}
Coordinates.accuracy
只读属性是一个严格的正双精度,表示以米表示的Coordinates.latitude
和Coordinates.longitude
属性的精度(置信度为 95%(。
点击此处查看详细信息。