gpt4 book ai didi

javascript - 动态创建地理触发器工作灯

转载 作者:行者123 更新时间:2023-11-28 07:58:30 25 4
gpt4 key购买 nike

我正在工作灯中实现地理围栏,但我想动态创建地理触发器。我看到了这个post并尝试了她的代码,但它对我不起作用。我使用了假位置并进入了地理围栏,但回调函数未触发。这是我的代码。 branch_data_g 是一个包含经度和纬度的 json 字符串。

function getFirstPositionAndTrack() {
WL.Logger.info("getfirstpositionandtrack function");
// use GPS to get the user's location
var geoPolicy = WL.Device.Geo.Profiles.LiveTracking();
geoPolicy.timeout = 60000; // set timeout to 1 minute
geoPolicy.maximumAge = 10000; // allow to use a position that is 10 seconds old

// note: to see at high-accuracy, change RoughTracking above to LiveTracking

// get the user's current position
WL.Device.Geo.acquirePosition(
function(pos) {
WL.Logger.debug("acquired position");
WL.Logger.debug("Longitude: " + pos.coords.longitude);
WL.Logger.debug("Latitude: " + pos.coords.latitude);

var triggers = new Object();
triggers.Geo = {};

var trigger_events = generateTrigger();

triggers.Geo = trigger_events;

WL.Device.startAcquisition({ Geo: geoPolicy }, triggers, { Geo: alertOnGeoAcquisitionErr } );
},
function(geoErr) {
alertOnGeoAcquisitionErr(geoErr);
// try again:
getFirstPositionAndTrack();
},
geoPolicy.Geo
);
}

function generateTrigger() {
var parsed_data = JSON.parse(branch_data_g);
WL.Logger.info("generatetrigger function: " + parsed_data.branches.length);
var trigger_events = new Object();
WL.Logger.info("sample: " + parsed_data.branches[0].latitude);
for(var i = 0; i < parsed_data.branches.length; i++) {
var trigger = {
type: "Enter",
circle: {
longitude: parsed_data.branches[i].longitude,
latitude: parsed_data.branches[i].latitude,
radius: 100
},
callback: function() {
WL.Logger.info("Enter branch");
WL.Client.transmitEvent({ branch: "enter branch"}, true);
}
};
trigger_events["branch"+i] = trigger;
}

return trigger_events;
}

这是我的适配器中的代码:

function eventHandler() {
//nothing to do here..
}

WL.Server.setEventHandlers([
WL.Server.createEventHandler({branch: 'enter branch'}, eventHandler)
]);

我错过了什么吗?提前致谢!

最佳答案

您是否先调用了 WL.Client.connect?请注意,在至少建立一次连接之前,WL.Client.transmitEvent 不会发送事件。

我认为您正在通过查找 WL.Logger.info 消息来检查回调。否则,我看不到您在服务器端执行任何操作(尽管事件处理仍然可以记录在原始报告数据库中)。

此外,您可能想尝试 DwellInside 触发器(dwellingTime 设置为 0)而不是 Enter; Enter 要求您从该区域外开始,然后进入该区域内。

关于javascript - 动态创建地理触发器工作灯,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25739027/

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