在不加载整个地图的情况下更新谷歌地图中的标记
Posted
技术标签:
【中文标题】在不加载整个地图的情况下更新谷歌地图中的标记【英文标题】:Update Marker in Google Maps without loading whole map 【发布时间】:2019-01-08 21:14:50 【问题描述】:我在 CI 中有一个应用程序,我每隔两秒从数据库中获取员工的当前位置并绘制其当前位置标记 我的代码正在工作,但每 2 秒后它会通过显示新的位置标记来更新标记,但也会继续显示旧标记。 我想在显示新标记之前删除员工的旧标记。 这是我的代码
<script>
function initMap4(data,id)
var map2 = new google.maps.Map(document.getElementById('map2'),
zoom: 8,
center: new google.maps.LatLng(31.1704,72.7097),
mapTypeId: google.maps.MapTypeId.ROADMAP
);
var infowindow = new google.maps.InfoWindow();
window.setInterval(function()
$.ajax(
type: 'POST',
url: '<?php echo base_url() ?>salesman/get_salesman_by_id',
data : id: id,
success: function (response)
var result = response ;
update(result);
);
,2000);
function update(data)
var clicked = false;
var locations2;
if(data)
locations2= JSON.parse(data);
else
locations2 = JSON.parse('<?php echo $clocation; ?>');
var locations_array2= [];
$.each(locations2[0], function( index, value )
locations_array2.push([
value.first_name,
value.lat,
value.long,
value.checkin_time,
value.checkout_time,
]);
);
locations2=locations_array2;
for (i = 0; i < locations2.length; i++)
var currTime = Date.now() - 300000;
var online = locations2[i][5];
var MyOnlineMarker =
position: new google.maps.LatLng(locations2[i][1], locations2[i][2]),
map: map2,
;
if(locations2[i][4] == "" )
marker = new google.maps.Marker(MyOnlineMarker);
else
marker = new google.maps.Marker(
position: new google.maps.LatLng(locations2[i][1], locations2[i][2]),
map: map2,
icon: 'assets/Images/red.png'
);
</script>
【问题讨论】:
请提供一个minimal reproducible example 来证明您的问题。你的 JSON 是什么样的? 你会只有一个标记吗?或者可能有多个标记?如果是这样,您的 JSON 中是否有标识标记的属性? Google Map v3 auto refresh Markers only的可能重复 update markers without reloading the web page google maps v3 的可能副本 【参考方案1】:我已经解决了 通过将标记推入数组而不是删除它们
【讨论】:
以上是关于在不加载整个地图的情况下更新谷歌地图中的标记的主要内容,如果未能解决你的问题,请参考以下文章
如何在不点击标记的情况下在 iOS 谷歌地图中显示信息窗口?