离子谷歌地图仅在第一次加载视图时显示

时间:2015-12-14 10:42:06

标签: angularjs google-maps ionic-framework ionic

我的离子应用程序从数据库中获取一些位置,并根据此数据生成地图。

$scope.$on('$ionicView.beforeEnter', function(){

    // get event data
    Events.getEvent($stateParams.eventId).then(function(data){
      $scope.eventInfo = data[0];
      $ionicLoading.hide();
      // get location data
      if(data[0].location){
        Locations.getLocation(data[0].location).then(function(data){
          $scope.location = data[0];
          // call the map
          $scope.initialize($scope.location.locstreet, $scope.location.zip, $scope.location.ort);
        });
      }
});

检索数据后,脚本调用initialize函数:

function initialize(strasse, plz, ort) {

    var map = new google.maps.Map(document.getElementById('map'),{
      zoom: 14
    });

    img =  new google.maps.MarkerImage("img/icon.png", null, null, null, new google.maps.Size(30,30));
    var geocoder = new google.maps.Geocoder();
    var address = strasse + ", " + plz + " " + ort;

    geocoder.geocode({'address': address}, function(results, status) {
      if (status === google.maps.GeocoderStatus.OK) {
        map.setCenter(results[0].geometry.location);
        var marker = new google.maps.Marker({
          map: map,
          position: results[0].geometry.location,
          icon: img
        });
      } else {
        alert('Geocode was not successful for the following reason: ' + status);
      }
    });

  }

这是第一次导航到此视图时效果很好。如果我离开视图并返回与其他数据相同的视图,则地图仅显示灰色,右下角是Google徽标。

我认为这可能是因为多重初始化var map。但是,如果我在功能之外宣布var map它也不起作用。

1 个答案:

答案 0 :(得分:1)

将此缓存:false 添加到您的州提供商(定义地图时)。 这对我有用。