Angularjs 谷歌地图在页面刷新后不显示地图

Angularjs 谷歌地图在页面刷新后不显示地图,angularjs,google-maps,Angularjs,Google Maps,当我第一次进入页面时,地图显示成功。当我刷新时,地图不会继续显示。我应该怎么做?我正在使用google maps api v3,我将地图实现为angular指令 谢谢你的帮助 代码: 指令(“appMap2”,函数($window,$localStorage){ 返回{ 限制:“E”, 替换:正确, 模板:“”, 范围:{ 中心:“=”, 标记:“=”, 宽度:“@”, 高度:“@”, 缩放:“@”, mapTypeId:“@”, 泛控制:“@”, zoomControl:“@”, scale

当我第一次进入页面时,地图显示成功。当我刷新时,地图不会继续显示。我应该怎么做?我正在使用google maps api v3,我将地图实现为angular指令

谢谢你的帮助

代码:

指令(“appMap2”,函数($window,$localStorage){ 返回{ 限制:“E”, 替换:正确, 模板:“”, 范围:{ 中心:“=”, 标记:“=”, 宽度:“@”, 高度:“@”, 缩放:“@”, mapTypeId:“@”, 泛控制:“@”, zoomControl:“@”, scaleControl:“@” }, 链接:函数(范围、元素、属性){ var toResize,toCenter; var映射; var信息窗口; var电流标记; var callbackName='InitMapCb'; var标记=[]; //加载google地图时的回调 $window[callbackName]=函数(){ createMap(); updateMarkers(); }; if(!$window.google |!$window.google.maps){ loadGMaps(); }否则{ createMap(); } 函数loadGMaps(){ var script=$window.document.createElement('script'); script.type='text/javascript'; script.src=http://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&callback=InitMapCb'; $window.document.body.appendChild(脚本); } 函数setMapOnAll(映射){ 对于(var i=0;i时间:“+datum; setContent(contentString); 信息窗口设置位置(引脚位置); 打开(地图); google.maps.event.addListener(信息窗口,'closeclick',函数(){ infowindow.close(); }); } 功能标记器CB(标记器、成员、位置){ 返回函数(){ var href=”http://maps.apple.com/?q=“+member.lat+”,“+member.lon; 地图设置中心(位置); onItemClick(标记,member.name,member.date,href); }; } 函数updateMarkers(){ 如果(地图){ /*元素绑定('单击',函数(信息){ 警报(‘点击地图’+JSON.stringify(信息)); var marker=new google.maps.marker({ 位置:{lat:$localStorage.deal.location[0],lng:$localStorage.deal.location[1]}, 地图:地图, 标题:$localStorage.deal.title }) marker.setMap(map); }) */ } } 函数getLocation(loc){ if(loc==null)返回新的google.maps.LatLng(40,-73); 如果(角度isString(loc))loc=范围$eval(loc); 返回新的google.maps.LatLng(loc.lat,loc.lon); } } }; }) HTML



您还应提供相关代码。仅仅提到这个问题并不能帮助其他人找到解决方案。我已经添加了代码!您是否检查了刷新时是否调用了您的
loadGmaps
功能?检查此项/您还应提供相关代码。我
.directive("appMap2", function ($window,$localStorage) {
    return {
        restrict: "E",
        replace: true,
        template: "<div></div>",
        scope: {
            center: "=",        
            markers: "=",       
            width: "@",         
            height: "@",        
            zoom: "@",          
            mapTypeId: "@",     
            panControl: "@",    
            zoomControl: "@",   
            scaleControl: "@"   
        },
        link: function (scope, element, attrs) {
            var toResize, toCenter;
            var map;
            var infowindow;
            var currentMarkers;
            var callbackName = 'InitMapCb';
            var markers=[];

            // callback when google maps is loaded
            $window[callbackName] = function() {

                createMap();
                updateMarkers();
            };

            if (!$window.google || !$window.google.maps ) {
                loadGMaps();
            }else{  
                createMap();
            }

            function loadGMaps() {

                var script = $window.document.createElement('script');
                script.type = 'text/javascript';
                script.src = 'http://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&callback=InitMapCb';
                $window.document.body.appendChild(script);
            }

            function setMapOnAll(map) {
                 for (var i = 0; i < markers.length; i++) {
                     markers[i].setMap(map);
                 }
            }

            // Removes the markers from the map, but keeps them in the array
            function clearMarkers() {
                setMapOnAll(null);
            }

            // Shows any markers currently in the array.
            function showMarkers() {
                setMapOnAll(map);
            }

            function deleteMarkers() {
                clearMarkers();
                markers = [];
            }

            function createMap() {
                google.maps.event.addDomListener(window, 'load', createMap);
                var mapOptions = {
                    zoom: 7,
                    center: new google.maps.LatLng($localStorage.latitude,$localStorage.longitude),
                    mapTypeId: google.maps.MapTypeId.ROADMAP,
                    panControl: true,
                    zoomControl: true,
                    mapTypeControl: true,
                    scaleControl: false,
                    streetViewControl: false,
                    navigationControl: true,
                    disableDefaultUI: true,
                    overviewMapControl: true
                };

                if (!(map instanceof google.maps.Map)) {    
                    map = new google.maps.Map(element[0], mapOptions);
                    google.maps.event.addDomListener(element[0], 'mousedown', function(e) {
                    e.preventDefault();
                    return false;
                 });

                 google.maps.event.addListener(map, "click", function (e) {

                     deleteMarkers();

                     var x=JSON.parse(JSON.stringify(e));
                     var latLng = x.latLng;
                     alert(latLng.lat)
                     $localStorage.locationDealSet=[latLng.lat,latLng.lng];
                     alert($localStorage.locationDealSet)
                     marker= new google.maps.Marker({
                     position: {lat:Number(parseFloat(latLng.lat)),lng:Number(parseFloat(latLng.lng))},
                     map:map,
                     title:$localStorage.deal.title
                  })    

                  markers.push(marker);
                  marker.setMap(map);

              });
          infowindow = new google.maps.InfoWindow(); 
      }
  }

  scope.$watch('markers', function() {
      updateMarkers();
  });

  function onItemClick(pin, label, datum, url) { 
      var contentString = "Name: " + label + "<br />Time: " + datum;

          infowindow.setContent(contentString);
          infowindow.setPosition(pin.position);
          infowindow.open(map);

          google.maps.event.addListener(infowindow, 'closeclick', function() {
              infowindow.close();
          });
      }   

      function markerCb(marker, member, location) {
          return function() {
              var href="http://maps.apple.com/?q="+member.lat+","+member.lon;
              map.setCenter(location);
              onItemClick(marker, member.name, member.date, href);
          };
       }

       function updateMarkers() {
           if (map ) {
               /*element.bind('click',function(info){
                   alert('click on map '+JSON.stringify(info));
                   var marker=new google.maps.Marker({
                       position:{lat:$localStorage.deal.location[0],lng:$localStorage.deal.location[1]},
                       map:map,
                       title:$localStorage.deal.title
                    })  
                    marker.setMap(map); 
                }) */

            }
        }

        function getLocation(loc) {
            if (loc == null) return new google.maps.LatLng(40, -73);
            if (angular.isString(loc)) loc = scope.$eval(loc);
                return new google.maps.LatLng(loc.lat, loc.lon);
            }

        } 
    }; 
})
<app-map2 style="height:33%;width:100%;" center="bucharest" zoom="5"> 
</app-map>