如果地图标记位于地理围栏的内部或外部,我会检查波纹管代码。
我将在界限范围内检测到警报。
我的问题是地图标记不断刷新,我不希望警报重复过来。
我需要在播放闹钟时设置一些内容。然后,只有在未设置该事件时才进行警报。
当在边界内检测到用户时,它也将取消设置。
if (name === f.contact) {
var fence = new google.maps.LatLng(f.lat, f.lng);
var dist = google.maps.geometry.spherical.computeDistanceBetween(posi, fence);
// check if in/out of fence
if (dist > f.radius) {
console.log(f.contact+" : "+dist+" meters - outside the fence");
// OMG outside the fence play an alarm
} else {
console.log(f.contact+" : "+dist+" meters - inside the fence");
// Back inside the fence, reset the alarm
}
}
我在考虑制作一个像这样的数组
var alertSent = [];
然后如果在地理围栏之外添加用户名
alertSent.push(name);
我如何检查数组中是否存在名称?
当我回到围栏内时,如何从数组中删除名称?
答案 0 :(得分:1)
如果您最终使用数组,那么您可以搜索每个索引,直到找到像
这样的字符串How do I check if an array includes an object in JavaScript? 要么 Best way to find if an item is in a JavaScript array?
你也可以考虑,注册事件和事件处理器来处理这个问题,这将是一个更好的设计。
或者你也可以像使用
一样使用hashmap类的javascript实现alertSent["driver1"]=true;,
在这种情况下查找将很简单,只需使用,
alertSent [ “驱动1”]
获取布尔值。但在这种情况下要注意数组空间。
答案 1 :(得分:1)
您可以使用Object作为关联数组,并使用名称作为键和发送/未发送的布尔值。如果alertSent [name]根本不包含名称,它也会评估为假值。
var alertSent = {};
// if user outside: check
if (!alertSent[name]) {
// show alert
// remember that alert was shown
alertSent[name] = true;
}
// remove name from alertSent:
alertSent[name] = false;