我有一个小的指令,在我的Angular应用程序中处理谷歌地图:
app.directive('googleMaps', function($rootScope, $q, $window){
var mapLoader = $q.defer();
function loadGoogleApi(key){
var script = document.createElement('script');
script.type = 'text/javascript';
script.src= "https://maps.googleapis.com/maps/api/js?key=" + key + "&callback=initMap";
$('body').append(script);
return mapLoader.promise;
};
$window.initMap = function(){
mapLoader.resolve();
};
return {
restrinct: 'E',
link: function($scope, element, attrs){
loadGoogleApi('AIzaSyBtuQ-wYoHqnAxpXh8hTAfEH8BQCiBSCWw').then(function(){
$scope.map = new google.maps.Map(element[0], {
zoom: 4,
center: { lat: 20, lng: 40 }
});
google.maps.event.trigger($scope.map,'resize');
});
}
};
});
然后在我的index.jade中,我有以下代码:
//Other stuff
div.col.s12.m12.map-container
h6="I miei spot"
google-maps
所有的初始化过程都成功了但是当我在网站上使用地图时,我可以看到各种奇怪的图形错误,如this。
我在这段代码中使用了materialize.css和这个简单的css:
google-maps { width: 100%; height: 300px;display: block; }
.map-container { height: 220px;margin-top: 10px; }
我不明白为什么会有这个bug,我没有在互联网上发现任何有关该bug的内容。
我通过在我的css文件中删除这行代码解决了这个问题:
.map-container img { border-radius: 50%; }
这是一个简单的逻辑错误。