【发布时间】:2014-09-05 14:08:46
【问题描述】:
我无法正确更新 Google Maps API v3。我正在运行一个 JavaScript 计时器,应该定期刷新流量层,但我没有看到它发生。
根据我对文档的理解,我应该能够说“layer.setMap(null);”之类的话接着是“layer.setMap(map);”刷新图层(来源:https://developers.google.com/maps/documentation/javascript/reference#TrafficLayer)。
我知道正在下载新的地图图块(例如,我可以在 Chrome 开发工具的资源部分看到它们),但浏览器没有呈现它们。我可能缺少一些基本的东西。
我尝试了几件事,包括:
- 使用元标记禁用缓存:Using <meta> tags to turn off caching in all browsers?
- 使用清单文件:How to prevent Google Maps API v3 from caching tiles (to save storage space)?
- 禁用 Chrome 的浏览器缓存(同时保持开发工具打开):Disabling Chrome cache for website development
- 触发另一个事件以刷新图层:Google Maps refresh traffic layer
- 每次定时器事件都完全重新初始化地图。
有没有办法确保浏览器在不强制重新加载整个页面的情况下呈现新图像?
以下是页面的简化版本(基于Google Maps refresh traffic layer 的回答)。
<html>
<head>
<title>Map Testing</title>
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?v=3.exp&libraries=weather"></script>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">
var map,
trafficLayer,
mapTimerHandle;
$(function() {
initMap();
mapTimerHandle = setInterval(refreshMap, 15000);
});
function refreshMap() {
trafficLayer.setMap(null);
trafficLayer.setMap(map);
}
function initMap() {
var mapDiv = document.getElementById('map');
map = new google.maps.Map(mapDiv, {zoom: 15, center: new google.maps.LatLng(40.7127, -74.0059)});
trafficLayer = new google.maps.TrafficLayer();
trafficLayer.setMap(map);
}
</script>
</head>
<body style="margin:0px;">
<div id="map" style="width:100%; height:100%;"></div>
</body>
</html>
【问题讨论】:
-
谢谢!我确实查看了那篇文章(实际上它是我在帖子中引用的文章之一)。不幸的是,这对我不起作用。
-
您是否在浏览器上游的任何地方访问代理或缓存?
标签: javascript html google-maps