我想调整它的容器的大小后调整大小的地图。拨打invalidateSize()
后地图不会调整。在这个例子中,我希望地图缩小到新的容器大小。我做了一个简单的测试用例角:Mapbox调整大小
的Index.html:
<div class="container-fluid" ng-controller="testCtrl">
<div class="row">
<div class="col-xs-12" ng-class="{'smaller': timedOut}">
<mapbox map-id="jonfor.cifpucu09j2jos4m7h7dts4ek"></mapbox>
</div>
</div>
</div>
Controller.js:
testController.controller('testCtrl', ['$scope', 'mapboxService', '$timeout', function ($scope, mapboxService, $timeout) {
mapboxService.init({accessToken:'pk.eyJ1Ijoiam9uZm9yIiwiYSI6ImNpZnB1Y3Y0OGh0NnJyN2x4OHFqNzdoajUifQ.vg3xNMJH-RgzRAZF7RzhzQ'});
$timeout(function() {
$scope.timedOut = true;
var map = mapboxService.getMapInstances()[0];
map.invalidateSize();
console.log("Timeout");
}, 3000);
}]);
App.css:
.smaller {
width : 100px;
}
我也有把项目放在GitHub上:https://github.com/Jonfor/MapBoxTest
在你的例子中,你直接修改宽度。这就是它工作的原因。当我通过外部样式表修改宽度时,我的更改不会生效。 – Jonfor
我看到你正在使用[Angular Mapbox Directive](http://licyeus.github.io/angular-mapbox/)。你对它有多熟悉,可能还有[Angular Leaflet Directive](https://tombatossals.github.com/angular-leaflet-directive)?我会更新上面的答案。 – ghybs
是的!虚拟值是完美的。正是我所需要的。 – Jonfor