对地图更新感到困惑

时间:2017-02-28 16:25:27

标签: javascript html json google-maps

非常使用Google地图和非常新的复杂的javascript。考虑到这一点,我试图用USGS的饲料创建一个网络地图。此Feed每5分钟更新一次。我想使用相同的Feed(这是一个geojson文件)每隔5分钟刷新一次地图。

我的最终目标是在我的地图上显示/更新至少一个其他Feed。在过去的四天里,我经历了几十个帖子,而且我正处于超负荷和困惑的地步。有人请清除我的雾吗?

我发布的代码99%不是我的代码,主要是我添加了评论,因此我可以弄清楚代码中发生了什么。

<HTML>
  <HEAD>
    <TITLE>TEST OF MAP</TITLE>
    <STYLE>
/* --------------------------------------------------- */
/* Set the map height explicitly to define the size of */
/* the DIV * element that contains the map.            */
/* ----------------------------------------------------*/
      #map {
        height: 75%;
        border: 5px solid green;
      }
    </STYLE>
  </HEAD>

<SCRIPT type="text/javascript">    

// --------------------------------------
// Set a refresh interval in milliseconds
// --------------------------------------
    setInterval(page_refresh, 1*60000); 
    google.maps.event.addDomListener(window, 'load', initialize);

</SCRIPT>

  <BODY>
    <H1><CENTER>MAP Demo</CENTER></H1>
    <DIV id="map"></DIV>

    <SCRIPT>
      var map;
      function initMap() {
        map = new google.maps.Map(document.getElementById('map'), {
          zoom: 2,
          center: new google.maps.LatLng(35.4437,139.6380),
          mapTypeId: 'terrain'
        });

// ---------------------------------------------------------
// Create a <SCRIPT> tag and set the USGS URL as the source.
// ---------------------------------------------------------
        var script = document.createElement('script');

// -----------------------------------------------------------------------
// Using a local copy of the GeoJSON stored on the USGS server
// 

http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_hour.geojsonp
// -----------------------------------------------------------------------
        script.src = 

'http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_hour.geojson

p';
        document.getElementsByTagName('head')[0].appendChild(script);
      }

// ------------------------------------------------------------------
// Loop through the results array and place a marker for each set of
// coordinates.
// ------------------------------------------------------------------
      window.eqfeed_callback = function(results) {
        for (var i = 0; i < results.features.length; i++) {
          var coords = results.features[i].geometry.coordinates;
          var latLng = new google.maps.LatLng(coords[1],coords[0]);
          var marker = new google.maps.Marker({
            position: latLng,
            map: map
          });
        }
      }
    </SCRIPT>

    <SCRIPT async defer src="https://maps.googleapis.com/maps/api/js?

key=MY_MAP_KEY&callback=initMap">
    </SCRIPT>
  </BODY>
</HTML>

1 个答案:

答案 0 :(得分:0)

虽然不是很优雅,但我使用以下内容进行刷新。由于我只是在构建“概念证明”,因此刷新整个页面不是问题。

   function timedRefresh(timeoutPeriod) {
    setTimeout("location.reload(true);",timeoutPeriod);
   }
   window.onload = timedRefresh(60*5000);