angular-google-在 iOS 设备上映射离子

angular-google-maps ionic on iOS device

我尝试将 google 地图添加到我的 Ionic 应用程序。在浏览器中一切正常,但在 iOS 设备上却不行。

我的问题是搜索框。我可以在这个地方输入,我会看到下拉列表。但是当我 select 列表之一时,我必须按键盘上的 "Done" 按钮来更新输入字段。

我没有找到解决这个问题的方法。目前我不确定 Ionic 是否适合我的应用程序。也许这对它来说太过分了。

也许这里有人知道我错过了什么。这是我第一次使用 Ionic。

这是我的代码:

查看

 <ion-view view-title="mapview">
   <ion-content class="has-header map-container" >
     <div class="angular-google-map-container" >
       <ui-gmap-google-map center="mapview.map.center" events="mapview.map.events" zoom="mapview.map.zoom" >
         <ui-gmap-search-box template="searchbox.tpl.html" events="mapview.map.events" ></ui-gmap-search-box>
       </ui-gmap-google-map>
     </div>
   </ion-content>
 </ion-view>

JS:

angular.module('XXXX')
  .config(function(uiGmapGoogleMapApiProvider) {
     uiGmapGoogleMapApiProvider.configure({
      'API_KEY_FOR_ANDROID': 'XXXX',
      'API_KEY_FOR_IOS': 'XXXX',
      v: '3.20',
      libraries: 'places'
     });
   })
  .directive('mapview', function() {
    return {
      restrict: 'E',
      templateUrl: 'client/mapview/mapview.html',
      controllerAs: 'mapview',
      controller: function($scope, $reactive, $rootScope) {
        $reactive(this).attach($scope);
        this.map = {
          center: {
          latitude: 45,
          longitude: -73
         },
        zoom: 12,
        events: {
          places_changed: (searchBox) => {
            var places = searchBox.getPlaces();
            if (places) {
              this.map.center.latitude = places[0].geometry.location.lat();
              this.map.center.longitude = places[0].geometry.location.lng();
            }
          }
        }
      };
     }
    }
  })
  .run(['$templateCache', function ($templateCache) {
    $templateCache.put('searchbox.tpl.html', '<input id="pac-input" class="pac-controls" type="text" placeholder="Search" >');
  }])

我遇到了同样的问题。您需要在生成的元素上禁用数据抽头。这意味着您将需要一个额外的指令,如下所示:

.directive('disabletap', function($timeout) {
  return {
    link: function() {
      $timeout(function() {
        container = document.getElementsByClassName('pac-container');
        // disable ionic data tab
        angular.element(container).attr('data-tap-disabled', 'true');
        // leave input field if google-address-entry is selected
        angular.element(container).on("click", function(){
            document.getElementById('type-selector').blur();
        });

      },500);

    }
  };
});

然后终于记得将指令添加到元素中,它应该可以工作。