gpt4 book ai didi

android - watchPosition() 只触发回调一次

转载 作者:行者123 更新时间:2023-11-29 21:41:25 25 4
gpt4 key购买 nike

我正在为 MapDotNet 的 Touchgeo ( http://www.mapdotnet.com/index.php/component/content/article?id=131) 中的地理围栏功能编写 watchPosition 函数。在初始加载时,一切都运行良好;刷新时,我只收到一行调试消息,表示只有一个回调,而且我手机上的 GPS 从未打开。这是我的 watchPosition 函数:

navigator.geolocation.watchPosition(
function success(pos) {
$('#debug')
.prepend(
$('<div></div>').text('accuracy: ' + pos.coords.accuracy)
)
.css({
textAlign: 'right',
color: 'black'
});
var endpoint = isc.touchgeo.dataServicesEndpoint + "Map/mapname/Features/geofence?x={x}&y={y}&role={role}"
.replace("{x}", pos.coords.longitude)
.replace("{y}", pos.coords.latitude)
.replace("{role}", isc.touchgeo.authenticationMgr.getAuthorizationRecord().Role);
$.getJSON(endpoint, function success(data) {
$('#debug')
.prepend(
$('<div></div>').text('features: ' + data.length)
)
.css({
textAlign: 'right',
color: 'black'
});
for (layer in data) {
if (layer in geofencingRules) {
geofencingRules[layer](data[layer]);
}
}
});
},
function error(error) {
$('#debug')
.prepend(
$('<div></div>').text('error: ' + error.code)
)
.css({
textAlign: 'right',
color: 'black'
});
},
{
enableHighAccuracy: true,
maximumAge: 15000,
}
);

有什么想法吗?

最佳答案

我想通了。基本上,positionOptions 上的 maximumAge 告诉 watchPosition() 使用页面刷新前的数据。因此,GPS 从未打开并且 watchPosition() 没有接收到数据。解决这个问题的方法是让

var maximumAge = 0;
navigator.geolocation.watchPosition(
function success(pos) {
maximumAge = 15000;
$('#debug')
.prepend(
$('<div></div>').text('accuracy: ' + pos.coords.accuracy)
)
.css({
textAlign: 'right',
color: 'black'
});
var endpoint = isc.touchgeo.dataServicesEndpoint + "Map/mapname/Features/geofence?x={x}&y={y}&role={role}"
.replace("{x}", pos.coords.longitude)
.replace("{y}", pos.coords.latitude)
.replace("{role}", isc.touchgeo.authenticationMgr.getAuthorizationRecord().Role);
$.getJSON(endpoint, function success(data) {
$('#debug')
.prepend(
$('<div></div>').text('features: ' + data.length)
)
.css({
textAlign: 'right',
color: 'black'
});
for (layer in data) {
if (layer in geofencingRules) {
geofencingRules[layer](data[layer]);
}
}
});
},
function error(error) {
$('#debug')
.prepend(
$('<div></div>').text('error: ' + error.code)
)
.css({
textAlign: 'right',
color: 'black'
});
},
{
enableHighAccuracy: true,
maximumAge: maximumAge,
}
);

也就是说,向 maximumAge 传递一个初始化为 0 但在第一次回调时递增到 15000 的变量。

希望这对某人有帮助。

关于android - watchPosition() 只触发回调一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16989942/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com