2
我在Angular(和Ionic)应用程序中显示Google Map。如何在Angular中显示ng-if div中的谷歌地图?
我在视图中有下面的div,只是为了显示地图,如果它是真的。当我运行这个,我得到一个错误说:“TypeError:无法读取属性'null'offsetWidth'”。我很困惑,因为地图div应该显示,因为它的父div应评估为true。但由于某种原因,它没有显示。
有关如何仅在map_display ='true'时显示地图的任何建议?
<div ng-if="map_display == 'true'">
<div id = "map" data-tap-disabled="true" style = "height:{{heightWidth}}px;"></div>
</div>
我的控制器有:
$scope.map_display = 'true';
$scope.initialise = function() {
var myLatlng = new google.maps.LatLng(37.758446, -122.411789);
var markersArray = [];
//Initial settings for the map
var mapOptions = {
center: myLatlng,
zoom: 2,
mapTypeId: google.maps.MapTypeId.ROADMAP,
styles: [{ featureType: "poi", elementType: "labels", stylers: [{ visibility: "off" }]}]
};
//Load the initial map
var map = new google.maps.Map(document.getElementById("map"), mapOptions);
//Event listener to add a marker
google.maps.event.addListener(map, 'click', function(e) {
clearOverlays();
placeMarker(e.latLng, map);
$scope.coordinates = e.latLng;
localStorage.userLat = $scope.coordinates.lat();
localStorage.userLong = $scope.coordinates.lng();
});
//Actual function to add a marker
function placeMarker(position, map) {
var marker = new google.maps.Marker({
position: position,
map: map
});
map.panTo(position);
markersArray.push(marker);
}
function clearOverlays() {
for (var i = 0; i < markersArray.length; i++) {
markersArray[i].setMap(null);
}
markersArray.length = 0;
}
// $scope.map=map;
};
// End of initialise
google.maps.event.addDomListener(document.getElementById("map"), 'load', $scope.initialise());
当我编辑到“窗口”时,我仍然得到相同的错误。 – sharataka
您是否将'$ scope.initialise()'更改为'$ scope.initialise'? –
是的,但同样的错误仍然发生。 – sharataka