如何刷新天气层?

时间:2012-07-08 22:49:20

标签: javascript google-maps-api-3

有没有人知道是否有办法在Google Maps javascript API中刷新天气层?

为了给出一点背景知识,我们有一个应用程序在浏览器中保持打开状态,并且每隔几分钟就会在地图上更新一些信息。我们让用户在地图上打开天气图层,但天气只在创建图层时加载一次。过了一段时间,它已经过时了,我们希望它保持最新状态。我已经尝试了从重新创建图层并将地图设置为null,然后返回当前地图,但温度永远不会重新加载。

任何建议都会有所帮助。谢谢!

更新: 一些代码片段显示我是如何尝试重新加载天气图层的。

//Global variable for the weather layer
var weatherLayer = null;

//When user clicks the weather button on the map
weatherLayer = new google.maps.weather.WeatherLayer({..});
weatherLayer.setMap(myMap);

//When I try to refresh the layer
weatherLayer.setMap(null); //This successfully hides it
weatherLayer = new google.maps.weather.WeatherLayer({...});
weatherLayer.setMap(myMap);  //This doesnt' reload the data.

//Tried resetting the options before and after recreating the layer to see if that would help, but it didn't
weatherLayer.setOptions({..new option set..});

1 个答案:

答案 0 :(得分:0)

我唯一能想到的就是在天气层处于活动状态时运行的时间循环上创建一个新的天气层。

var weatherLayer = null;
var timer = null; // This is for the refresh timer

//Add the click hander to the weather button
$(weatherButton).click(function() {
    if(weatherLayer == null) {
        setWeatherLayer();
    } else {
        clearTimeout(timer);
        weatherLayer.setMap(null);
        weatherLayer = null;
    }
});

function setWeatherLayer() {
    //Create a new layer
    weatherLayer = new google.maps.weather.WeatherLayer({
        temperatureUnits: google.maps.weather.TemperatureUnit.FAHRENHEIT
    });
    weatherLayer.setMap(map);
    timer = setTimeout(setWeatherLayer, 5000);
}

可能会有一些更好的解决方案,但我认为这可行。