4

我检查了谷歌地图的原生 API 中有 checkresize() 方法。但它似乎不适用于 gmaps.js 的刷新功能。

有人在使用 AngularJS 和 gMaps.js 时遇到过类似的问题吗?你怎么来解决它?

调整大小之前

调整窗口大小后,地图再次出现。所以我在想无论如何要检查 gMap.js 的初始化调整大小?

调整大小后

4

4 回答 4

10

当我尝试时,ng-cloak 对我不起作用。我认为这是因为我在扩展用户交互的面板中使用地图,而不是在加载时可见。

我将我的 ng-show 切换为 ng-if 并且它工作正常。这是因为地图代码(我使用了指令)在 if 条件为真之前不会运行,这允许它正确呈现。

*抱歉小提琴被删除了。我不记得里面有什么,但它是这样的
<gmap unique="231" center="{{getAddress(item)}}" destination="{{getAddress(item)}}" origin="{{getMyAddress(item)}}" type="roadmap" marker-content="Hello"></gmap>

重要的是,在您的容器元素实际显示之前,google 脚本不会开始执行它们的操作。这是通过 ng-if 完成的。

于 2014-05-05T15:19:28.637 回答
2

ng-cloak在您的地图元素或指令元素上添加该属性。

“ngCloak 指令用于防止 Angular html 模板被浏览器短暂显示”

http://docs.angularjs.org/api/ng.directive:ngCloak

于 2013-09-26T11:08:17.583 回答
0

地图无需调整大小即可成功渲染。

为什么调整大小给你正确的地图?

因为浏览器再次绘制视图。

如何解决?

为了在最近触发的任何面板中获得正确的地图布局,必须在加载面板后绘制地图。这可以通过(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);
于 2016-02-05T11:14:10.640 回答
0

尝试在控制器中使用以下代码调整地图大小:

        NgMap.getMap().then(function(map){
            google.maps.event.addListener(map, "idle", function(){
                google.maps.event.trigger(map, 'resize'); 
            });
        });
于 2016-09-05T07:32:02.680 回答