我想調整它的容器的大小後調整大小的地圖。撥打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