Ionic 3 Google 地图在 Android + IOS 上不显示

Posted

技术标签:

【中文标题】Ionic 3 Google 地图在 Android + IOS 上不显示【英文标题】:Ionic 3 Google Map does not display on Android + IOS 【发布时间】:2017-12-31 11:25:46 【问题描述】:

我使用 Ionic 3 版本,并尝试在我的应用程序中添加一个页面,以显示带有标记的地图。 我已经在我的应用程序中使用了用于自动完成的 Google 地图 ID(Google 地方...)。 我访问了 Google API,并将 Map Embed、javascript 等添加到我的 API 密钥中。 但是页面底部出现“谷歌”和显示按钮“,但地图是空的。 见附件...

安装 Cordova 和 Ionic Native 插件:

$ ionic cordova plugin add https://github.com/mapsplugin/cordova-plugin-googlemaps#multiple_maps --variable API_KEY_FOR_android="AIzaSyB6mEnxH4vC+++++++++9wnXXNNmK2co" --variable API_KEY_FOR_ios="AIzaSyB6mEnxH4v++++++++++++++ wnXXNNmK2co" $ npm install --save @ionic-native/google-maps

Home.ts:

import  NavController  from 'ionic-angular';
import  Component, ViewChild, ElementRef  from '@angular/core';
import  GoogleMaps, CameraPosition, GoogleMapsEvent, GoogleMap, MarkerOptions, Marker  from "@ionic-native/google-maps";

@Component(
  selector: 'page-home',
  templateUrl: 'home.html'
)

export class HomePage 

  @ViewChild('map') mapElement: ElementRef;
  map: any;
  constructor(public navCtrl: NavController, private googleMaps: GoogleMaps) 

  
  ngAfterViewInit() 
 this.loadMap();


loadMap() 
 // make sure to create following structure in your view.html file
 // and add a height (for example 100%) to it, else the map won't be visible
 // <ion-content>
 //  <div #map id="map" style="height:100%;"></div>
 // </ion-content>

 // create a new map by passing HTMLElement
 let element: HTMLElement = document.getElementById('map');

 let map: GoogleMap = this.googleMaps.create(element);

 // listen to MAP_READY event
 // You must wait for this event to fire before adding something to the map or modifying it in anyway
 map.one(GoogleMapsEvent.MAP_READY).then(
   () => 
     console.log('Map is ready!');
     // Now you can add elements to the map like the marker
   
 );

 // create CameraPosition
 let position: CameraPosition = 
   target: 
     lat: 43.0741904,
     lng: -89.3809802
   ,
   zoom: 18,
   tilt: 30
 ;

 // move the map's camera to position
 

主页.HTML

Home.html :
<ion-header>
  <ion-navbar>
    <ion-title>
      Map
    </ion-title>
    <ion-buttons end>
      <button ion-button (click)="addMarker()"><ion-icon name="add"></ion-icon>Add Marker</button>
    </ion-buttons>  
  </ion-navbar>
</ion-header>
 
<ion-content>
<div #map id="map" style="height:100%;"></div> 
</ion-content>

首页.scss

page-home 

【问题讨论】:

添加相关的 HTML 和 CSS(如果有)。 我编辑了我的 aks 并添加了 html 和 css。 【参考方案1】:

不要使用ngAfterViewInit。 你必须等待platform.ready()

// Wait the native plugin is ready.
platform.ready().then(() => 
  this.loadMap();
);

完整代码是https://github.com/mapsplugin/cordova-plugin-googlemaps-doc/blob/master/v2.0.0/ionic-native/README.md

回购:https://github.com/mapsplugin/ionic-google-maps


当前官方文档页面错误。我发送了一个拉取请求,但它现在正在等待。 https://github.com/ionic-team/ionic-native/pull/1834

【讨论】:

您好,我尝试了您的问题,但地图仍然没有出现。 在此之后,我按照您发送的链接的文档进行操作,但仍然没有出现地图。我想我的问题来自我的 API。您能否告诉我如何配置 API 以用于 Google 自动完成 + 使地图出现。 我在最新的代码中发现了一个错误。请尝试重新安装插件或为第二个参数指定相机选项。 github.com/mapsplugin/cordova-plugin-googlemaps-doc/blob/master/… 该错误已在@ionic-native/core 和@ionic-native/google-maps ver4.2.0 中修复,请重新安装这两个包。 npmjs.com/package/@ionic-native/corenpmjs.com/package/@ionic-native/google-maps【参考方案2】:

请尝试以下代码并确保您使用正确的 API 密钥,在您的 .ts 文件中写入以下代码:

  ionViewDidLoad() 
    this.loadMap();
   
   loadMap() 

        let mapOptions: GoogleMapOptions = 
          camera: 
            target: 
              lat: 43.0741904,
              lng: -89.3809802
            ,
            zoom: 18,
            tilt: 30
          
        ;

        this.map = this.googleMaps.create('map_canvas', mapOptions);

        // Wait the MAP_READY before using any methods.
        this.map.one(GoogleMapsEvent.MAP_READY)
          .then(() => 
            console.log('Map is ready!');

            this.map.addMarker(
                title: 'Ionic',
                icon: 'blue',
                animation: 'DROP',
                position: 
                  lat: 43.0741904,
                  lng: -89.3809802
                
              )
              .then(marker => 
                marker.on(GoogleMapsEvent.MARKER_CLICK)
                  .subscribe(() => 
                    alert('clicked');
                  );
              );

          );
      

在您的 .html 文件中定义如下地图

<ion-content>
  <div id="map_canvas" style="height: 100%;"></div>
</ion-content>

【讨论】:

以上是关于Ionic 3 Google 地图在 Android + IOS 上不显示的主要内容,如果未能解决你的问题,请参考以下文章

Ionic 6. 更新到 cordova 10.0.0 后 Google 地图未显示

Ionic 3 中嵌入的动态长纬度谷歌地图

Google地图自动填充功能在Cordova iOS上使用WKWebView失败

谷歌地图在 Ionic 2 应用程序中不起作用

Ionic 5 Google Maps 标记在缩放时闪烁

为什么地图标记的样式设置在Ionic 2中无效?