我有一个地方的经纬度。我想检查这样的标记是否已经存在。我该怎么做?
var myLatLng = new google.maps.LatLng(Lat, Long);
//before setting marker i want to check here
marker.setPosition(myLatLng);
marker.setVisible(true);
可能吗?
我有一个地方的经纬度。我想检查这样的标记是否已经存在。我该怎么做?
var myLatLng = new google.maps.LatLng(Lat, Long);
//before setting marker i want to check here
marker.setPosition(myLatLng);
marker.setVisible(true);
可能吗?
每当您向地图添加标记时(此时最好将标记添加到标记数组),将 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);
尝试这个:
// 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);
LatLng
对象有一种方法equals()
来判断一个LatLng
是否等于另一个Marker
对象有一个getPosition()
返回LatLng
对象的方法marker.getPosition().equals( myLatLng )
告诉他们的位置是一样的链接:https ://developers.google.com/maps/documentation/javascript/reference#Marker
只需使用 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())
您可以尝试使用getVisible()方法
var isVisible = marker.getVisible();
if ( isVisible && marker.getPosition() != myLatLng ) {
marker.setPosition(myLatLng);
marker.setVisible(true);
}