Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Google地图中从JSON刷新标记而不闪烁_Javascript_Json_Google Maps - Fatal编程技术网

Javascript 在Google地图中从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

关于这个问题,我一直在寻找不同的答案,但我仍然不知道如何用我的代码解决这个问题

我正在使用Google map API v3从PHP加载JSON的示例

我想四处转转
$('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
            }
        }
    }