Javascript Can';当调整div的大小时,不要让Google地图高度自动调整大小
我正在使用AngularJS、jQueryUI(带有一个用于调整大小的自定义指令)和引导。在我的页面上,谷歌地图显示在顶部,表格将显示在底部。当用户调整底部区域的大小时,我希望Google地图自动调整大小以占用剩余空间 我尝试了几种不同的方法,包括:Javascript Can';当调整div的大小时,不要让Google地图高度自动调整大小,javascript,angularjs,google-maps-api-3,twitter-bootstrap-3,Javascript,Angularjs,Google Maps Api 3,Twitter Bootstrap 3,我正在使用AngularJS、jQueryUI(带有一个用于调整大小的自定义指令)和引导。在我的页面上,谷歌地图显示在顶部,表格将显示在底部。当用户调整底部区域的大小时,我希望Google地图自动调整大小以占用剩余空间 我尝试了几种不同的方法,包括: 设置html,主体{height:100%;width:100%}和#mapCanvas{height:100%} 使用flexbox和flexgrow 调整底部部分的大小后,计算顶部部分的大小,并基于此动态更改#mapCanvas元素的高度
- 设置
和html,主体{height:100%;width:100%}
#mapCanvas{height:100%}
- 使用flexbox和flexgrow
- 调整底部部分的大小后,计算顶部部分的大小,并基于此动态更改
元素的高度#mapCanvas
函数initMap(){
让mapOptions={
缩放:8,
minZoom:8,
中心:新google.maps.LatLng(43,-81),
mapTypeId:google.maps.mapTypeId.ROADMAP,
};
map=new google.maps.map(document.getElementById('mapCanvas')、mapOptions);
}
让app=angular.module(“maapp”['ui.bootstrap']);
app.directive('可调整大小',function()){
返回{
限制:“A”,
范围:{
回调:“&onResize”
},
链接:函数postLink(范围、元素、属性){
可调整大小的元素({
“句柄”:{
“n”:“.ui-resizable-n”
}
});
}
};
});
app.controller(“MapAppController”,函数($scope){
initMap();
});代码>
html,
身体{
身高:100%;
宽度:100%;
}
#地图画布{
/*身高:100%*/
高度:60vh;
}
.ui-可调整大小-n{
边框顶部:5px纯色灰色;
}
.桌子{
背景:#fff;
}
底部内容部分
将上部元素设置为可调整大小,并侦听调整大小
事件,然后将地图容器高度设置为已调整大小的元素高度
app.directive('resizable', function() {
return {
restrict: 'A',
scope: {
callback: '&onResize'
},
link: function postLink(scope, elem, attrs) {
elem.resizable();
elem.on('resizestop', function(evt, ui) {
if (scope.callback) {
scope.callback();
}
});
elem.on('resize', function(evt, ui) {
// Set map container height based on resizable element height
$('#map-canvas').height($('div[resizable]').height());
});
}
};
});
完全工作的小提琴。通过将上部元素设置为可调整大小,并侦听调整大小
事件,并将地图容器高度设置为已调整大小的元素高度
app.directive('resizable', function() {
return {
restrict: 'A',
scope: {
callback: '&onResize'
},
link: function postLink(scope, elem, attrs) {
elem.resizable();
elem.on('resizestop', function(evt, ui) {
if (scope.callback) {
scope.callback();
}
});
elem.on('resize', function(evt, ui) {
// Set map container height based on resizable element height
$('#map-canvas').height($('div[resizable]').height());
});
}
};
});
全工作小提琴。您只需获得桌子的实际高度并使用此代码即可
var newHeight = $('body').height();
$('#map').css('height', newHeight);
希望这有帮助 您只需获得桌子的实际高度并使用此代码即可
var newHeight = $('body').height();
$('#map').css('height', newHeight);
希望这有帮助 我在地图顶部有一个菜单栏。当我添加一些几何图形时,它们隐藏在我不想要的菜单栏后面。因此,我得到了菜单栏的高度,然后将其从地图的高度中删除。现在我在地图上应用了这个高度
//Setting up map with initial properties
$scope.map = new google.maps.Map(document.getElementById('map'), {
zoom: 3,
center: new google.maps.LatLng(latCenter, longCenter),
fullscreenControl: false,
mapTypeControl: true,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
position: google.maps.ControlPosition.TOP_RIGHT
},
mapTypeId: google.maps.MapTypeId.ROADMAP
});
//Restricting the zoom levels for the user
var opt = { minZoom: 1, maxZoom: 16 };
$scope.map.setOptions(opt);
//removing the top menubar height
var newHeight = $('body').height() - 41 + 'px';
//setting up the map from 100% to the new height
$('#map').css('height', newHeight);
我在地图的顶部有一个菜单栏。当我添加一些几何图形时,它们隐藏在我不想要的菜单栏后面。因此,我得到了菜单栏的高度,然后将其从地图的高度中删除。现在我在地图上应用了这个高度
//Setting up map with initial properties
$scope.map = new google.maps.Map(document.getElementById('map'), {
zoom: 3,
center: new google.maps.LatLng(latCenter, longCenter),
fullscreenControl: false,
mapTypeControl: true,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
position: google.maps.ControlPosition.TOP_RIGHT
},
mapTypeId: google.maps.MapTypeId.ROADMAP
});
//Restricting the zoom levels for the user
var opt = { minZoom: 1, maxZoom: 16 };
$scope.map.setOptions(opt);
//removing the top menubar height
var newHeight = $('body').height() - 41 + 'px';
//setting up the map from 100% to the new height
$('#map').css('height', newHeight);
您可以使用resize
事件,并根据可调整大小的元素高度设置贴图容器高度(在本例中,顶部区域可调整大小…)@Upsidown先生太完美了!这个解决方案非常有效。我只需要稍微调整一下计算,以解释我在页面顶部的一个div。如果您想发布您的评论作为答案,我很乐意接受。您可以使用resize
事件,并根据可调整大小的元素高度设置地图容器高度(在本例中,顶部部分可调整大小…)@Upsidown先生太完美了!这个解决方案非常有效。我只需要稍微调整一下计算,以解释我在页面顶部的一个div。如果你想把你的评论作为答案发表,我很乐意接受代码>获取表格高度?好的,是这样的,然后我们给地图一个新的高度。那么你提供一个完整的工作片段,让我们看看你的解决方案是如何工作的呢?$('body').height()代码>获取表格高度?好的,是这样的,然后我们给地图一个新的高度。那么你提供一个完整的工作片段,让我们看看你的解决方案是如何工作的呢?