首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Google本地cordova插件,Ionic 3只显示一个灰色框

Google本地cordova插件,Ionic 3只显示一个灰色框
EN

Stack Overflow用户
提问于 2017-09-25 16:01:53
回答 3查看 3.5K关注 0票数 3

我试图得到一张地图显示,所有我得到的是一个灰色盒子与谷歌的标志在底部。我看过这个网站上的其他帖子,并且尝试了所有这些,但似乎没有一个能解决这个问题。我正在使用离子型3.12.0与cordova插件googlemaps 2.0.7,我已经确保API键是正确的,并在仪表板中启用。

我试过使用教程,下面的https://ionicframework.com/docs/native/google-maps/是代码

代码语言:javascript
运行
复制
import {
 GoogleMaps,
 GoogleMap,
 GoogleMapsEvent,
 GoogleMapOptions,
 CameraPosition,
 MarkerOptions,
 Marker
} from '@ionic-native/google-maps';


import { Component, Input, ViewChild } from '@angular/core';
import { Platform } from 'ionic-angular';

@Component({
  selector: 'map',
  template: '<div #map id="map"></div>'
})
export class Map {

  map: GoogleMap;
  mapElement: HTMLElement;
  constructor(private googleMaps: GoogleMaps) { }

  setMapLocation(coords: any) {
    this.map.setCameraTarget(coords);
  }

  ionViewDidLoad() {
   this.loadMap();
  }

  loadMap() {
  this.mapElement = document.getElementById('map');

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

  this.map = this.googleMaps.create(this.mapElement, mapOptions);

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

      // Now you can use all methods safely.
      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');
            });
        });

    });
}}

我添加的CSS是

代码语言:javascript
运行
复制
#map {
    width: 100% !important;
    height: 100% !important;
    img{ max-width: none !important; }
    overflow:visible !important;
    z-index: 1;
}

ion-app._gmaps_cdv_ .nav-decor{
  background-color: transparent !important;
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-09-25 16:31:17

我也有同样的问题,

这对我有用。

删除google地图插件,删除平台

Re用不同的API键添加插件重新添加平台

票数 3
EN

Stack Overflow用户

发布于 2017-12-05 14:59:37

可能有各种各样的原因。

(或)应该在中启用。

检查您的Google密钥的有效性和限制。

使用来自@ ElementRef /core的HTMLElement而不是HTMLElement。

试试这个:https://codeburst.io/native-google-maps-and-geolocation-ionic-fe635a00249d

票数 1
EN

Stack Overflow用户

发布于 2018-06-29 15:09:19

转到console.cloud.google.com

您将不得不设置帐单(您将不收费)

搜索: API

为Android启用Maps SDK

为iOS启用Maps SDK

生成API密钥

创建一个新的离子项目,当被问及是否需要cordova支持时,按Y键。

代码语言:javascript
运行
复制
ionic start yourProjectName blank

完成后做

代码语言:javascript
运行
复制
cd yourProjectName

将平台添加到项目中。

代码语言:javascript
运行
复制
ionic cordova platform add ios

ionic cordova platform add android

那就跑

代码语言:javascript
运行
复制
ionic cordova plugin add cordova-plugin-googlemaps --variable API_KEY_FOR_ANDROID="YourGeneratedApiKeyFromGoogleCloudPlatform" 
  --variable API_KEY_FOR_IOS="YourGeneratedApiKeyFromGoogleCloudPlatform"

那就跑

代码语言:javascript
运行
复制
npm install --save @ionic-native/core@latest @ionic-native/google-maps@latest

所以现在您已经安装了所有的东西,并且需要将模块导入到ts文件中。

在app.module.ts import { GoogleMaps } from '@ionic-native/google-maps'中并将GoogleMaps添加到提供程序数组中。

代码语言:javascript
运行
复制
providers: [
    StatusBar,
    SplashScreen,
    GoogleMaps,
    {provide: ErrorHandler, useClass: IonicErrorHandler}
  ]

现在您需要设置TS、HTML和SCSS。

我将粘贴前面所有步骤的工作代码。

home.ts

代码语言:javascript
运行
复制
import {
  GoogleMaps,
  GoogleMap,
  GoogleMapsEvent,
  GoogleMapOptions,
  CameraPosition,
  MarkerOptions,
  Marker
} from '@ionic-native/google-maps';
import { Component } from "@angular/core/";

@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})
export class HomePage {
  map: GoogleMap;
  constructor() { }

  ionViewDidLoad() {
    this.loadMap();
  }

  loadMap() {

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

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

    let marker: Marker = this.map.addMarkerSync({
      title: 'Ionic',
      icon: 'blue',
      animation: 'DROP',
      position: {
        lat: 43.0741904,
        lng: -89.3809802
      }
    });
  }
}

home.html

代码语言:javascript
运行
复制
<ion-content padding>
  <h3>Ionic GoogleMaps Starter</h3>
 
  <div id="map_canvas">
    <button ion-button >Start demo</button>
  </div>
</ion-content>

home.scss

代码语言:javascript
运行
复制
page-home {
    #map_canvas {
      height: 90%;
    }
  }

如果地图仍然是灰色的,这意味着您的API键没有在正确的位置使用。

检查这些文件

config.xml

package.json

和platforms/android/app/src/main/AndroidManifest.xml

这3个文件拥有您的API密钥。

检查他们的钥匙,并与你的钥匙比较

不要编辑AndroidManifest.xml,它在构建时会被重写。

祝你好运

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46409507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档