我正在开发一个有趣的应用程序,它允许您记录您拍摄的路线。我正在使用它来了解Google Maps API以及Phonegap Build,因此这些是我在这里使用的工具。
我制作了一个基本的应用程序,它将位置数据(lat,lng)收集到一个数组中,然后使用Google的API在地图上显示结果。在将来,我想用一条线连接它们,允许注释等等。
这是我邻居的驱动器的样子:
非常整洁。但是,这里有些不对劲。尝试映射那么多坐标点时,较长的行程会使应用程序崩溃。这里in the docs描述了选项哈希。我看起来像这样:
var options = { maximumAge: 1000, timeout: 3000, enableHighAccuracy: true };
我不确定我完全理解这个解释。 maximumAge
似乎意味着,除了新的GPS或位置数据之外,它只会使用前一个,因此将其设置为9999999会使其永远不会使用缓存数据。
超时比较棘手。似乎位置信息不是保证,因此有时它会引发错误。但增加这个数字是否会影响一个积分较少的路线?我在哪里可以找到有关GPS系统与手机配合使用的信息?
答案 0 :(得分:0)
你应该使用navigator.geolocation.watchPosition 当检测到位置变化时,它返回设备的当前位置。当设备检索新位置时,geolocationSuccess回调将以Position对象作为参数执行。如果有错误,则使用PositionError对象作为参数执行geolocationError回调。
<强>语法强>
var watchId = navigator.geolocation.watchPosition(geolocationSuccess,
[geolocationError],
[geolocationOptions]);
示例强>
// onSuccess Callback
// This method accepts a `Position` object, which contains
// the current GPS coordinates
//
function onSuccess(position) {
var element = document.getElementById('geolocation');
element.innerHTML = 'Latitude: ' + position.coords.latitude + '<br />' +
'Longitude: ' + position.coords.longitude + '<br />' +
'<hr />' + element.innerHTML;
}
// onError Callback receives a PositionError object
//
function onError(error) {
alert('code: ' + error.code + '\n' +
'message: ' + error.message + '\n');
}
// Options: throw an error if no update is received every 30 seconds.
//
var watchID = navigator.geolocation.watchPosition(onSuccess, onError, { timeout: 3000 });
现在,只有在移动设备时才会捕获这种位置,因此路线的绘图点较少。 根据您的要求更改超时。
clearwatch当您想要停止观看设备位置的更改时。