3

Google Maps javascript APIで天気レイヤーを更新する方法があるかどうか誰かが知っていますか?

少し背景を説明するために、ブラウザで開いたままで、数分ごとに地図上の情報を更新するアプリケーションがあります。ユーザーが地図上で天気レイヤーを開くことができるようにしますが、レイヤーが作成されるときに天気が読み込まれるのは1回だけです。しばらくすると古くなってしまいますので、最新の状態に保ちたいと思います。レイヤーを再作成してマップを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..});
4

1 に答える 1

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);
}

いくつかのより良い解決策があるかもしれませんが、これでうまくいくと思います。

于 2012-08-11T10:44:14.423 に答える