如何检查Google地图中是否已存在标记?

时间:2013-10-15 06:46:08

标签: javascript google-maps google-maps-api-3

我有一个地方的经纬度。我想检查这样的标记是否已经存在。我该怎么办?

var myLatLng = new google.maps.LatLng(Lat, Long);
//before setting marker i want to check here
marker.setPosition(myLatLng);
marker.setVisible(true);

有可能吗?

4 个答案:

答案 0 :(得分:11)

每当您向地图添加标记时(此时最好将标记添加到标记数组),请将lat和lng添加到单独的查找数组中。

var lookup = [];
lookup.push([lat, lng]);
marker.setPosition(myLatLng);

然后,当您想检查特定位置是否存在标记时,循环查找数组:

var search = [51.5945434570313, -0.10856299847364426];

function isLocationFree(search) {
  for (var i = 0, l = lookup.length; i < l; i++) {
    if (lookup[i][0] === search[0] && lookup[i][1] === search[1]) {
      return false;
    }
  }
  return true;
}

isLocationFree(search);

答案 1 :(得分:5)

试试这个:

// mkList = [mark1, mark2, ...], existing marker container

var myLatLng = new google.maps.LatLng(Lat, Long);

// check if this position has already had a marker
for(var x = 0; x < mkList.length; x++) {
    if ( mkList[x].getPosition().equals( myLatLng ) ) {
        console.log('already exist');
        return;
    }
}

var newMarker = new GoogleMap Marker - by myLatLng;
mkList.push(newMarker);
  • Google地图LatLng对象有一个方法equals()来判断LatLng是否等于另一个
  • Google地图Marker对象有一个方法getPosition(),它返回LatLng个对象
  • 用户marker.getPosition().equals( myLatLng )告诉他们的位置是否相同

链接:https://developers.google.com/maps/documentation/javascript/reference#Marker

答案 2 :(得分:0)

只需使用 js .includes 函数来简化已经给出的答案。

let markerPositions = [];

然后在添加新标记之前进行测试:

if (markerPositions.includes(Lat.toString() + "," + Lng.toString()))  {
    continue;
}

//logic here to create the actual google.Maps.Marker, add it to the map, etc.

markerPositions.push(Lat.toString() + "," + Lng.toString())

答案 3 :(得分:-2)

您可以尝试使用getVisible()方法

var isVisible = marker.getVisible(); 
if ( isVisible && marker.getPosition() != myLatLng ) {
    marker.setPosition(myLatLng);
    marker.setVisible(true);
}