我正在编写一个跟踪当前位置的应用程序,并使用google.maps.Polyline绘制它。 问题是即使停止,当前位置也会发生变化。走路时也会发生这种情况。像这样:
这是代码:
var watchOptions = { timeout: 1000, enableHighAccuracy: false // get the same behaviour with 'true' };
var track = []; // coordinates to draw with Polyline
watch = $cordovaGeolocation.watchPosition(watchOptions);
changeMarker(myMarker, latLng);
watch.then(
null,
function(err) {
console.log(err);
},
function(position) {
var latLng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
// push current position to array
track.push({ lat: position.coords.latitude, lng: position.coords.longitude});
var trackPath = new google.maps.Polyline({
path: track, // pass coordinates
strokeColor: "#2980b9",
geodesic: true,
strokeOpacity: 1.0,
strokeWeight: 2
});
// draw on map
trackPath.setMap($scope.map);
答案 0 :(得分:0)
首先,设置enableHighAccuracy: false
将使用低精度网络三角测量,而不是enableHighAccuracy: true
将使用GPS硬件。对于导航(例如步行),您应始终将其设置为true。
即使这样,GPS位置也不准确,会有一些错误 - 多少取决于许多因素,例如设备中的GPS硬件,天空的任何遮挡(例如树木,建筑物)以及卫星有多少被锁定了。
为了能够经常提供高精度的位置,我建议设置如下:
{
enableHighAccuracy: true,
maxAge: 0,
timeout: 30000
}