グーグルマップのネイティブAPIにcheckresize()メソッドがあることを確認したのですが、gmaps.jsのrefresh関数ではうまくいかないようです。
AngularJS と gMaps.js を使用して同様の問題を抱えている人はいますか? どうやって解決するのですか?
ウィンドウのサイズを変更すると、マップが再び表示されます。だから、gMap.jsの初期化時にサイズ変更をチェックする方法はあるのでしょうか?
グーグルマップのネイティブAPIにcheckresize()メソッドがあることを確認したのですが、gmaps.jsのrefresh関数ではうまくいかないようです。
AngularJS と gMaps.js を使用して同様の問題を抱えている人はいますか? どうやって解決するのですか?
ウィンドウのサイズを変更すると、マップが再び表示されます。だから、gMap.jsの初期化時にサイズ変更をチェックする方法はあるのでしょうか?
サイズを変更せずにマップが正常にレンダリングされました。
サイズを変更すると適切なマップが得られるのはなぜですか?
ブラウザがビューを再度描画するためです。
修正方法は?
最近トリガーされたパネルでマップの適切なレイアウトを取得するには、パネルがロードされた後にマップをペイントする必要があります。これは、以下で説明する (setTimeout) コードによって実現できます。コードの目的は、60 ミリ秒後にマップのサイズ変更イベントをトリガーすることです。
setTimeout(function () {
uiGmapIsReady.promise().then(function (maps) {
google.maps.event.trigger(maps[0].map, 'resize');
lat = -37;
lon = 144;
maps[0].map.panTo(new google.maps.LatLng(lat,lon));
var marker = {
id: Date.now(),
coords: {
latitude: lat,
longitude: lon
}
};
$scope.map.markers = [];
$scope.map.markers.push(marker);
console.log($scope.map.markers);
});
}, 60);
コントローラーで次のコードを使用して、マップのサイズを変更してみてください。
NgMap.getMap().then(function(map){
google.maps.event.addListener(map, "idle", function(){
google.maps.event.trigger(map, 'resize');
});
});