getCurrentPosition lat / lng未转换为Google地图中的正确位置

时间:2017-07-24 17:13:17

标签: javascript google-maps geolocation elm

我在使用HTML5地理位置getCurrentPosition()时遇到问题,并在Google地图中显示我的实际位置以显示标记。我的应用程序是使用elm-lang/geolocation包在Elm中编写的,以便在启用enableHighAccuracy时返回我的位置。获得lat / lng或在lat / lng处放置标记没有问题。

我遇到的问题是地图上的标记并不反映我的实际位置。我的准确度低至12英尺,放置10次的标记始终位于地图的一个非常小的区域内,但是非常小的区域距离我站立的地方大约90英尺。我无法弄清楚问题是我的手机返回的GPS位置是否刚刚离开谷歌地图'定位,如果我的GPS正在使用一些不同类型的方案,其中显示lat / lng坐标,如果地理位置不能正确解释它们,或者Google地图只是不显示非常精确的GPS坐标中的标记。

我的应用程序将检查小于100英尺的距离,因此标记放置的90英尺差异很大。

我正在以卫星模式查看Google地图,如果这有所不同。以下是地图的初始化方式。

window.roundsMap = new google.maps.Map(document.getElementById(ele),
                { zoom: 18
                , tilt: 0
                , mapTypeId: google.maps.MapTypeId.SATELLITE
                , center: coords
                , disableDefaultUI: true
                }

以下是标记的放置方式(myIcon是在另一个函数中创建的js svg对象):

 new google.maps.Marker({
            map: window.roundsMap,
            icon: myIcon,
            position: myPos
        })

1 个答案:

答案 0 :(得分:1)

您是否尝试过高精度?

navigator.geolocation.getCurrentPosition(
    geolocationSuccess,
    geolocationError, {
        timeout: 0,
        enableHighAccuracy: true,
        maximumAge: Infinity
    }
);

来源:https://developer.mozilla.org/en-US/docs/Web/API/PositionOptions/enableHighAccuracy

您还可以使用watchPosition持续观察用户位置,结果通常更准确:

navigator.geolocation.watchPosition(
    geolocationSuccess,
    geolocationError, {
        timeout: 0,
        enableHighAccuracy: true,
        maximumAge: Infinity
    }
);

来源:https://developer.mozilla.org/fr/docs/Web/API/Geolocation/watchPosition