javascript - 如何以 Angular 重新加载 View 。谷歌地图API

标签 javascript angularjs google-maps ionic-framework

我的问题是,当我使用谷歌地图加载屏幕时, map 不会显示。首先刷新后。我的错误是什么或者我该如何防止这种情况?

    .controller('LocationsCtrl', function($scope, $http, $timeout) {

      $scope.ini = function() {

      var map;
      var infowindow = new google.maps.InfoWindow();
      function initialize() {

          var mapProp = {
              center: new google.maps.LatLng(52.4550, -3.3833),
              zoom: 7,
              mapTypeId: google.maps.MapTypeId.ROADMAP
          };

          map = new google.maps.Map(document.getElementById("map"), mapProp);

          $.getJSON("https://onepicture.ch/locations.php", function(json1) {

          $.each(json1.stores, function (key, data) {

              var latLng = new google.maps.LatLng(data.lat, data.lng);

              var marker = new google.maps.Marker({
                  position: latLng,
                  title: data.title,
                  map: map
                  // icon: icon,

              });

              var details = "<b>" + data.title + "<b><br> " +data.address + "<br> " + data.city + "<br>";

              bindInfoWindow(marker, map, infowindow, details);

              });

          });

  }

  function bindInfoWindow(marker, map, infowindow, strDescription) {
      google.maps.event.addListener(marker, 'click', function () {
          infowindow.setContent(strDescription);
          infowindow.open(map, marker);
      });
  }

  google.maps.event.addDomListener(window, 'load', initialize);


    }
})

标记:

<ion-view ng-init="ini()">
  <ion-header-bar class="banner-top ext-box" align-title="left">
    <div class="int-box2"><h2 id="s_back1">MAP</h2></div>
  </ion-header-bar>
<ion-content overflow-scroll="true" class="has-header has-footer" scroll="false" >


  <div style="height:100%; width:100%;">
         <div id="map"></div>
    </div>



</ion-content>
<ion-footer-bar class="bar-bottom" align-title="left">
  <ul>
    <a href="#/home" nav-transition="none"><li><img src="img/home.png" class="img-left" alt=""></li></a>
    <a href="#/list" nav-transition="none"><li><img src="img/list.png" class="img-left"alt=""></li></a>
    <a href="#/map" nav-transition="none"><li><img src="img/map_de.png" class="img-left"alt=""></li></a>
    <a href="#/info" nav-transition="none"><li><img src="img/info.png" class="img-left"alt=""></li></a>
    <a href="#/tapsi" nav-transition="none"><li><img src="img/tapsy.png" class="img-left"alt=""></li></a>
  </ul>
</ion-footer-bar>
</ion-view>

最佳答案

除了父容器之外, map div 大小也需要显式指定:

<div id="map"></div>

CSS

#map {
        margin: 0;
        padding: 0;
        height: 100%;
        width: 100%;
    }

Plunker

关于javascript - 如何以 Angular 重新加载 View 。谷歌地图API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38566058/

相关文章:

javascript - 每次遍历时清除 For 循环内的 For 循环内容

google-maps - 如何使用节点球墨卡托?

javascript - 将变量作为全局变量存储在 ajax 响应中并用于发送其他 ajax 请求?

在 href 属性中使用 AngularJS 表达式时 HTML5 验证失败

javascript - 应用没有 ng-class 的类?

javascript - AngularJS JavaScript 语法错误

java - 在处理中加载网站

javascript - HTML5 视频 - 加载百分比?

javascript - 你能用 JavaScript 触发自定义 HTML5 表单错误吗?

Javascript 隐藏/显示多个元素