【问题标题】:adding a markers and updating the marker when lat and long change添加标记并在经纬度更改时更新标记
【发布时间】:2016-06-19 09:12:43
【问题描述】:

这部分代码使用 firebase,它从数据库中检索唯一的 id 以及它的纬度和经度。如果 uuid 是 myuuid,它将退出函数。但如果不是,它会进入下一个函数添加点。

    myFirebaseRef.on('child_changed', function(childSnapshot, prevChildKey) {
          // code to handle child data changes.

          var uuid = childSnapshot.key();
          var data = childSnapshot.val();
          var username = (data.username);
          var lat = (data.coords.latitude);
          var lon = (data.coords.longitude);
          if (uuid === myUuid) return



          addPoint(uuid, username, data);
        });

我的函数添加点抓取 uuid 和纬度和经度并将其绘制在谷歌地图上,我唯一的问题是它不会移动标记它只是添加一个标记。

    //add point
    function addPoint(uuid, username, data)
    {
    //  alert(username + data.coords.latitude + data.coords.longitude);
        var position = new google.maps.LatLng(data.coords.latitude,data.coords.longitude);
        var marker = new google.maps.Marker({
        position: position,
        });
      marker.setMap(map);
    }

我希望能够在地图上绘制标记并给标记一个唯一的 ID,这样如果该标记改变位置,那么该标记就会移动。解决这个问题的最佳方法是什么。我正在使用谷歌地图和火力基地。

【问题讨论】:

标签: javascript google-maps firebase marker


【解决方案1】:

一种选择是将您的标记保留在一个数组中,遍历该数组以查找具有该 uuid 的现有标记,如果存在,则移动它,否则,创建一个新标记。

var gmarkers = [];
//add point
function addPoint(uuid, username, data)
{
  var i;
  var position = new google.maps.LatLng(data.coords.latitude,data.coords.longitude);
  // check for already existing marker
  for (i=0; i<gmarkers.length; i++) {
    if (gmarkers[i].uuid == uuid) { // existing marker, move it
       gmarkers[i].setPosition(position);
       return;
    }
  }
  // no existing marker, create a new one
  var marker = new google.maps.Marker({
    position: position
  });
  marker.setMap(map);
  gmarkers.push(marker);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-08
    • 1970-01-01
    • 2011-09-16
    相关资源
    最近更新 更多