每10.5秒更新foreach中的项目

Update item from foreach every 10.5 seconds

本文关键字:项目 foreach 更新 5秒      更新时间:2023-09-26

所以我有这个代码:

$.getJSON( "fetch-beacons.php", function( beacons ) {
beacons.forEach(function(beacon) {
    if (beacon.uid != "<?php echo $uid ?>"){
        var circle = new google.maps.Circle({
            strokeColor: '#add8e6',
            strokeOpacity: 0.8,
            fillColor: '#add8e6',
            fillOpacity: 0.35,
            map: map,
            center: new google.maps.LatLng(Number(beacon.lat), Number(beacon.lng)),
            radius: Number(beacon.radius)
        });
        circle.addListener('click', function() {
            post('claimcreds.php', {id: beacon.id, cid: <?php echo $uid ?>, uid: beacon.uid, lat: pos.lat, lng: pos.lng, claimattempt: "true"});
            });
            }
    else {
        var circle = new google.maps.Circle({
        strokeColor: '#ffa500',
        strokeOpacity: 0.8,
        fillColor: '#ffa500',
        fillOpacity: 0.35,
        map: map,
        center: new google.maps.LatLng(Number(beacon.lat), Number(beacon.lng)),
        radius: Number(beacon.radius)
          });
         }
      });
    });

它从JSON文档中获取一些圆的详细信息,并且工作得很好。问题是,我想每隔10秒检查一次圆圈的位置与另一个位置(我们称之为pos),看看pos是否在圆圈内。

据我所知,执行此操作的方法是google.maps.geometry.spherical.computeDistanceBetween(circle.center, pos);,然后查看半径是否大于或小于该半径,但我不确定如何每十秒钟执行一次,因为圆变量在beacons.forEach语句循环时不会保存。

有人能帮忙吗?很抱歉,如果我问的不清楚/如果代码有点乱,呵呵:)

我想我会做这样的事情。首先定义一个全局函数,如:

function checkDistance(circle) { 
    var distance = google.maps.geometry.spherical.computeDistanceBetween(circle.getCenter(), pos);
    if (distance > x) {
        alert('ok');
    }
}

它需要一个参数circle。我假设pos是一个可以访问的全局变量。

然后在forEach循环中,在if-else语句之后(假设您想将其应用于这两种圆),以10.5秒的间隔调用该函数。它使用您刚刚创建的circle变量作为传递给函数的参数:

setInterval(checkDistance, 10500, circle);