Javascript 在Google地图中从JSON刷新标记而不闪烁
关于这个问题,我一直在寻找不同的答案,但我仍然不知道如何用我的代码解决这个问题 我正在使用Google map API v3从PHP加载JSON的示例 我想四处转转Javascript 在Google地图中从JSON刷新标记而不闪烁,javascript,json,google-maps,Javascript,Json,Google Maps,关于这个问题,我一直在寻找不同的答案,但我仍然不知道如何用我的代码解决这个问题 我正在使用Google map API v3从PHP加载JSON的示例 我想四处转转$('map\u canvas').gmap('clear','markers')因为这会删除我的“更新”中的所有标记 如何在标记不闪烁的情况下更新地图 如果新JSON调用的结果与地图上已有的实际数据不同,如何比较和删除/添加标记 地图 $(文档).on('pageshow','map_index',函数(){ var my
$('map\u canvas').gmap('clear','markers')代码>因为这会删除我的“更新”中的所有标记
- 如何在标记不闪烁的情况下更新地图
- 如果新JSON调用的结果与地图上已有的实际数据不同,如何比较和删除/添加标记
地图
$(文档).on('pageshow','map_index',函数(){
var mylatng=new google.maps.LatLng(58.990738,16.210006);
变量映射选项={
缩放:10,
中心:myLatlng,
mapTypeId:google.maps.mapTypeId.ROADMAP
};
var gmap=new google.maps.Map(document.getElementById(“Map_canvas”),mapOptions);
loadMarkers();
});
var loadMarkers=函数(){
setCenter();
$('map#u canvas').gmap('clear','markers');
$.getJSON('map/map_json.php',函数(数据){
$.each(data.markers,function(j,marker){
if(j==data.markers.length-1){
动画=google.maps.ANIMATION.BOUNCE;
}否则{
ANIMATION=google.maps.ANIMATION.NONE;
}
$('map_canvas').gmap('addMarker',{
“位置”:新的google.maps.LatLng(marker.lation,marker.Longitude),
“界限”:错误,
“图标”:用户,
“动画”:动画
})。单击(函数(){
$('map_canvas').gmap('openInfoWindow',{'content':
''
+'Tid:'+标记时间+'
+''
+'区域:'+标记。区域+''
+''
+“Larmtext:”+marker.Text+“”
+''
+“位置av Objekt”
+“
经度:”+标记。经度
+“
纬度:”+标记。纬度+”
},这个);
});
});
});
}
var myInterval=setInterval(函数(){loadMarkers()},3000);
var setCenter=函数(){
$('map_canvas').gmap('option','center',新的google.maps.LatLng(58.99073816.210006));
$('map#u canvas').gmap('option','zoom',12);
}
var User=new google.maps.MarkerImage('map/icons/User.png');
地图
我对标记闪烁也有同样的问题。
我的解决方案(没有jQuery):
这个示例JavaScript没有经过真正的测试,可能包含语法错误!但想法是改变现有标记上的位置,永远不要清除地图上的所有标记
删除/删除单个标记:
function GMapsDeleteMarker( map, markerid ) {
for( i=0;i< map.markers.length ; i++ ) {
if ( map.markers[i].id == markerid ){
map.markers[i].setMap(null);
delete map.markers[i]; //remove from array
}
}
}
函数GMapsDeleteMarker(map,markerid){
对于(i=0;i
这并不能真正回答您的问题,但我认为部分问题可能是您在运行AJAX请求之前清除了映射,因此在等待响应时映射是空的。只需制作$('#map_canvas').gmap('clear','markers')代码>在AJAX请求的回调中发生的第一步,而不是在启动请求之前进行。你能在代码中给出一个示例吗?我不能回避的是如何重新加载JSON,然后更新标记,而不闪烁。我的posten代码世界,但正如你所说,清除标记使标记闪烁。我应该用什么来代替?因为新的json可以是新的标记或标记上的新状态,所以我需要删除它们并再次显示它们。我见过其他例子,ppl使用设置位置而不是删除标记。让我给你回电话。
$.getJSON( 'map/map_json.php', function(data) {
$.each(data.markers, function(j, marker) {
if ( GMapsMarkerLocationUpdate('map_canvas', marker.Latitude, marker.Longitude, marker.ID /** your unique id from DB **/) == false ){
GMapsCreateMarker('map_canvas', marker.Latitude, marker.Longitude, marker.ID /** your unique id from DB **/ );
}
});
});
function GMapsDeleteMarker( map, markerid ) {
for( i=0;i< map.markers.length ; i++ ) {
if ( map.markers[i].id == markerid ){
map.markers[i].setMap(null);
delete map.markers[i]; //remove from array
}
}
}