2014-04-09 164 views
0

我可以使用geojson将数据绘制到谷歌地图上。我现在想每隔10秒刷新一次标记。我怎样才能做到这一点?在我的例子中,json文件将在我的本地服务器上刷新。我如何更改相同标记的属性/位置?使用Geojson刷新Google地图图层

<!DOCTYPE html> 
<html> 
<head> 
<style> 
    html, body, #map { 
    height: 100%; 
    margin: 0px; 
    padding: 0px 
    } 
</style> 
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script> 
<script> 
var map; 
var layer1; 
var layer2; 
function initialize() { 

    var mapOptions = { 
         zoom: 11, 
         center: new google.maps.LatLng(23.0171240, 72.5330533), 
         mapTypeId: google.maps.MapTypeId.ROADMAP 
        }; 


    map = new google.maps.Map(document.getElementById("map"), mapOptions); 
layer1 = map.data.loadGeoJson('http://localhost/envitia.its.webclient/myjson.json'); 

    } 

    google.maps.event.addDomListener(window, 'load', initialize); 
</script> 
</head> 

<body> 
<div id="map"> 
</div> 
</body> 
</html> 

回答

0

你能在JavaScript中使用setInterval()函数吗?在initialize()函数中,只需将layer1命令封装在setInterval()中,时间为10秒。

+0

谢谢你的作品,但遗留在地图上的旧标记。我想完全重新加载图层,以便删除旧标记。 – user2837961

+1

将标记放入数组中。然后在添加新标记之前清除数组中的标记。 Google的API Doc网站上有样本。 – Todd

+0

但是我如何在使用loadGeoJson函数时获得标记列表?您能否给我一下Google API Doc站点示例的链接? – user2837961

0

我有一个类似的问题,托德的评论是正确的。根据Google Maps API,GeoJSON函数只是将一堆功能加载到地图中。要删除它们,您可以

  1. 删除所有功能,并开始了
  2. 实现一些逻辑删除只需要删除的功能,并有选择地附加产品尚未在地图上

如果使用.addGeoJson()函数与.loadGeoJson()函数,则会略有不同。如果你使用的第一个,你可以这样做

 if (mapFeatures != null) { 
      for (var i = 0; i < mapFeatures.length; i++) { 
       map.data.remove(mapFeatures[i]); 
      } 
     } 
     geoJSON = jQuery.parseJSON(json.data); 
     mapFeatures=map.data.addGeoJson(geoJSON); 

mapFeatures是只是重复和删除Data.Feature对象的数组。如果使用.loadGeoJson()方法,那么可以使用forEach()方法迭代映射对象中的集合。

查看API参考。如果你想实现选择性特征去除,还有一个contains()方法 https://developers.google.com/maps/documentation/javascript/reference#Data