Javascript 谷歌地图删除标记的效率太高
我正试图通过refreshDiv()函数实时更新标记,并且我已经设法通过addMarker()和clearMarkers()了解了如何添加标记并删除所有标记。但是当调用clearMarkers()时,它会将它们全部清除 是否有办法设置标记的位置,然后将其移动到下一个位置 进一步解释 我正在做一个项目,需要显示每个标记的位置,为此我需要更新标记的位置,当更新之前留下的标记位置时,我使用clearMarkers(),但这会删除所有标记。我需要它删除以前的标记,但保留最近的标记Javascript 谷歌地图删除标记的效率太高,javascript,html,google-maps-api-3,Javascript,Html,Google Maps Api 3,我正试图通过refreshDiv()函数实时更新标记,并且我已经设法通过addMarker()和clearMarkers()了解了如何添加标记并删除所有标记。但是当调用clearMarkers()时,它会将它们全部清除 是否有办法设置标记的位置,然后将其移动到下一个位置 进一步解释 我正在做一个项目,需要显示每个标记的位置,为此我需要更新标记的位置,当更新之前留下的标记位置时,我使用clearMarkers(),但这会删除所有标记。我需要它删除以前的标记,但保留最近的标记 <!DOCTYP
<!DOCTYPE html>
<html>
<head>
<title>Remove Markers</title>
<style>
#map {
height: 100%;
}
html, body {
height: 100%;
margin: 0;
padding: 0;
}
</style>
</head>
<body onload='refreshDiv()'>
<div id="map"></div>
<p>Click on the map to add markers.</p>
<script>
var map;
var markers = [];
**//this is were the problem lies**
function refreshDiv()
{
addMarker(37.769,-122.446);
var refresher = setTimeout('refreshDiv()', 3000);
clearMarkers();
}
function initMap() {
var haightAshbury = {lat: 37.769, lng: -122.446};
map = new google.maps.Map(document.getElementById('map'), {
zoom: 12,
center: haightAshbury,
mapTypeId: 'terrain'
});
// This event listener will call addMarker() when the map is clicked.
// Adds a marker at the center of the map.
addMarker(haightAshbury);
}
// Adds a marker to the map and push to the array.
function addMarker(location) {
var marker = new google.maps.Marker({
position: location,
map: map
});
markers.push(marker);
}
// Sets the map on all markers in the array.
function setMapOnAll(map) {
for (var i = 0; i < markers.length; i++) {
markers[i].setMap(map);
}
}
// Removes the markers from the map, but keeps them in the array.
function clearMarkers() {
setMapOnAll(null);
}
// Shows any markers currently in the array.
function showMarkers() {
setMapOnAll(map);
}
// Deletes all markers in the array by removing references to them.
function deleteMarkers() {
clearMarkers();
markers = [];
}
</script>
<script async defer
src='https://maps.googleapis.com/maps/api/js?key=AIzaSyBVQaENEYHY2g-mRhD6_tj1cSK8DhQoqHI&callback=initMap'>
</script>
</body>
</html>
删除标记
#地图{
身高:100%;
}
html,正文{
身高:100%;
保证金:0;
填充:0;
}
单击地图以添加标记
var映射;
var标记=[];
**//这就是问题所在**
函数refreshDiv()
{
addMarker(37.769,-122.446);
var refresher=setTimeout('refreshDiv()',3000);
clearMarkers();
}
函数initMap(){
var haightAshbury={lat:37.769,液化天然气:-122.446};
map=new google.maps.map(document.getElementById('map'){
缩放:12,
中心:haightAshbury,
mapTypeId:'地形'
});
//单击映射时,此事件侦听器将调用addMarker()。
//在地图的中心添加标记。
addMarker(haightAshbury);
}
//将标记添加到地图并推送到阵列。
功能添加标记(位置){
var marker=new google.maps.marker({
位置:位置,,
地图:地图
});
标记器。推(标记器);
}
//在阵列中的所有标记上设置贴图。
函数setMapOnAll(映射){
对于(var i=0;i
我有点困惑,但据我所知,您需要先清除标记,然后添加新标记
function refreshDiv()
{
clearMarkers();
addMarker(new google.maps.LatLng(37.769, -122.446));
setMapOnAll(map)
var refresher = setTimeout('refreshDiv()', 3000);
}
您的代码在设置最终位置后清除了标记,因此您无法看到最终标记。将
clearMarkers()
作为refreshDiv
中的第一个调用移动,可以解决此问题。请查看下面的代码:
删除标记
#地图{
身高:100%;
}
html,正文{
身高:100%;
保证金:0;
填充:0;
}
单击地图以添加标记
var映射;
var标记=[];
//这就是问题所在**
函数refreshDiv()
{
clearMarkers();
var position=new google.maps.LatLng(37.769,-122.446);
添加标记(位置);
var refresher=setTimeout('refreshDiv()',3000);
}
函数initMap(){
//var haightAshbury={lat:37.769,液化天然气:-122.446};
var haightAshbury=newgoogle.maps.LatLng(37.769,-122.446);
map=new google.maps.map(document.getElementById('map'){
缩放:12,
中心:haightAshbury,
mapTypeId:'地形'
});
//单击映射时,此事件侦听器将调用addMarker()。
//在地图的中心添加标记。
addMarker(haightAshbury);
}
//将标记添加到地图并推送到阵列。
功能添加标记(位置){
var marker=new google.maps.marker({
位置:位置,,
地图:地图
});
标记器。推(标记器);
}
//在阵列中的所有标记上设置贴图。
函数setMapOnAll(映射){
对于(var i=0;i
被你的问题弄糊涂了。您想通过单击清除所有标记,但紧接着设置另一个位置?你能提供一个例子吗?我在一个项目上工作,需要显示每个标记的位置,要做到这一点,我需要更新标记的位置,当更新之前留下的标记的位置时,我使用clearMarkers(),但这会删除所有标记。问题在于setmaponal()
函数。清除标记后,所有内容都将变为NULL
,您需要通过ID跟踪最新位置,并使用IF语句在setmaponal()
中检查该ID。理论上,这将解决问题。我会查一查的。谢谢@Cosmonot这让我发疯了。任何帮助都将不胜感激。有用吗?你应该接受下面的两个答案,这样将来它可以帮助其他人。将你的代码与我的代码进行比较,你的代码最后调用了clearMarkers()
,因此它显然会删除所有