当开始隐藏时,Angular-google-maps现在可以正确显示了
angular-google-maps does now show correctly when it's hidden at start
当map用ng-show/ng-hide开始隐藏时,它一旦可见就不能正确显示。标准map也有同样的问题,只是我们可以向它发送一个resize,因为我们可以访问map对象。
下面是一个隐藏地图的示例。该按钮切换地图的可见性。
<!doctype html>
<html>
<head>
<style>
.angular-google-map-container {
width: 100%;
height: 100px;
}
.mymap {
width: 100%;
height: 100px;
}
</style>
</head>
<body ng-app="app" ng-controller="myCtrl">
<button ng-click="visible = !visible">ToogleMap</button>
<div ng-show="visible">
<google-map center="map.center" zoom="map.zoom"></google-map>
<div class="mymap"></div>
</div>
<script src='https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.8/angular.min.js'></script>
<script src='http://maps.googleapis.com/maps/api/js?sensor=false'></script>
<script src='http://underscorejs.org/underscore-min.js'></script>
<script src='https://rawgithub.com/nlaplante/angular-google-maps/master/dist/angular-google-maps.min.js'></script>
<script>
var app = angular.module("app", ["google-maps"]);
app.controller("myCtrl", function($scope, $timeout) {
$scope.map = {
center: {
latitude: 45.4,
longitude: -71.9
},
zoom: 11
};
$scope.visible = false;
});
</script>
</body>
</html>
对于js中的google-maps,我将发送一个resize到map对象,但我无法在angular-google-maps中访问它
试试用ng-if代替ng-show/ng-hide。Angular-google-maps有一个ng-show/ng-hide的问题。
看这个https://github.com/nlaplante/angular-google-maps/issues/291
我在这里找到了解决方案
为google-map标签添加control属性:
<google-map
center="mapOption.center"
zoom="mapOption.zoom"
control="myGoogleMap">
</google-map>
然后在控制器中设置$scope。myGoogleMap到{},它将在地图初始化时被填充。之后,你可以使用$scope.myGoogleMap.refresh()来调整地图的大小!
这是控制器的工作。
app.controller("myCtrl", function($scope, $timeout) {
$scope.mapOption = {
center: {
latitude: 45.4,
longitude: -71.9
},
zoom: 11
};
$scope.visible = false;
$scope.mapViewPosition = {};
$scope.$watch("visible", function(newvalue) {
$timeout(function() {
var map = $scope.myGoogleMap.refresh();
}, 0);
});
});
在显示
之前需要设置map元素css const partMap = document.getElementById(mapDivId);
partMap.style.height = "400px";
partMap.style.width = "800px";
partMap.style.marginLeft = 'auto';
partMap.style.marginRight = 'auto';
const center = new google.maps.LatLng(center_lat, center_lon);
const mapOptions = {
zoom: 8,
scrollwheel: false,
center: center,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
当元素没有显式样式时,Google map不起作用,并且当元素处于"ng-hide"模式时,样式信息不可用。
相关文章:
- 在jquery中为显示/隐藏设置cookie
- PHP Javascript显示/隐藏按钮不工作
- 打开/关闭按钮以显示/隐藏内容
- 显示隐藏复选框
- 在bootstrap中显示隐藏特定的li
- JQuery上下文菜单显示/隐藏问题
- JQuery在单击时停止显示/隐藏
- HTML5在提交并显示所需标签后显示隐藏的表单元素
- 使用 jQuery 切换显示/隐藏
- 显示/隐藏有关模型更改的指令内容
- Bootstrap在页面加载缓慢时会立即显示隐藏的模式对话框
- 根据特定条件使用ng显示/ng隐藏来显示/隐藏元素
- 显示/隐藏不起作用
- 使用ng-hide根据条件显示/隐藏按钮
- 仅在第一个结果中显示/隐藏MySQL结果函数
- 显示/隐藏http://ftp链接
- 在显示/隐藏中单击时删除的文本
- 是否可以在不重新渲染的情况下显示/隐藏父对象中的元素
- 将页面内容向左移动时显示/隐藏右侧面板
- 显示/隐藏将不会加载