使用JavaScript中的Google Maps API查找当前位置

时间:2018-08-23 02:36:03

标签: javascript google-maps google-maps-api-3

我一直在尝试在我的一个项目中使用Google Maps API,问题是即使允许位置访问(这是一个网站项目),也没有向我显示当前的确切位置。我的意思是,它输出的是位置,但距离200米。当我尝试在同一台设备上使用Google Maps的网络版本时,会向我显示当前位置+ -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地理编码和Places自动完成插件(1.7.0)结合使用 https://maps.googleapis.com/maps/api/js?libraries=places&key=AIzaSyDJ2bLO-XXXXXXX"

2 个答案:

答案 0 :(得分:6)

Google maps API根据以下来源提供位置:

  1. GPS :通过使用卫星(最长约20米)为您提供位置信息,有时情况不佳,例如恶劣的天气,地下或您在建筑物内。

  2. Wi-Fi :Wi-Fi网络IP地址的位置。

  3. 蜂窝塔:您与移动蜂窝网络塔的连接可以精确到数千米。

桌面浏览器::在通过Mozilla Firefox和Google Chrome位置之类的桌面浏览器浏览时,依赖于本地网络信息,例如计算机IP address等信号。 您的浏览器会要求您共享位置,如果您允许共享,则有关附近无线接入点的信息,IP address将共享给Google定位服务,以估算您的位置。 位置的准确性会因位置而异。

移动浏览器::Chrome,Safari,Opera等移动浏览器使用GPS sensors而非WiFi网络。

now enableHighAccuracy选项属性提供了一个提示,表明应用程序希望获得最佳结果。 这可能会导致响应时间变慢或功耗增加。

根据W3C的Geolocation API文档(https://w3c.github.io/geolocation-api/#high-accuracyNo guarantee is given that the API returns the device's actual location

  

Geolocation API定义了位置的高级接口   仅与托管主机的设备关联的信息   实施,例如纬度和经度。 API本身是   与基础位置信息源无关。共同   位置信息的来源包括全球定位系统   (GPS)和位置是根据网络信号(例如IP地址,   RFID,WiFi和蓝牙MAC地址以及GSM / CDMA单元ID   作为用户输入。无法保证API返回设备的   实际位置。

答案 1 :(得分:0)

无法获取确切位置。每个定位方法都包含错误。 GPS是最准确的,但误差仍在几米范围内。


在JavaScript中,最好的选择是使用

function throttle(func, interval) {
    var last = 0;
    return function() {
        var now = Date.now();
        if (last + interval < now) {
            last = now;
            return func.apply(this, arguments);
        }
    };
}


parentPanel.on("keypress", ".post-purchase-amount", null, throttle(function(event) {
    updateAmount($(this));
}, 800)); 

if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(function(position) { var pos = { lat: position.coords.latitude, lng: position.coords.longitude }; // ... } } 只读属性是一个严格的正双精度,表示以米为单位的Coordinates.accuracyCoordinates.latitude属性的准确性,置信度为95%。

查看详细信息here