【问题标题】:How to fix this 'Google Maps JavaScript API error: InvalidKeyMapError' error in angular 6?如何修复 Angular 6 中的“Google Maps JavaScript API 错误:InvalidKeyMapError”错误?
【发布时间】:2019-01-21 04:53:03
【问题描述】:

我在 Angular 6 应用中使用谷歌地图。

我也在另一个项目中使用了这张谷歌地图。但最近我开始另一个项目并安装 angular agm。然后使用我以前项目使用的 API 密钥。但它没有用。说'这是一个无效的密钥'。所以我得到了新的 API 密钥,但也有同样的问题。 这是浏览器中显示的问题。

Google Maps JavaScript API warning: InvalidKey https://developers.google.com/maps/documentation/javascript/error-messages#invalid-key util.js:222:33
Google Maps JavaScript API error: InvalidKeyMapError
https://developers.google.com/maps/documentation/javascript/error-messages#invalid-key-map-error js:51:110
_.Jc
https://maps.googleapis.com/maps/api/js:51:110
on/this.l</<
https://maps.googleapis.com/maps-api-v3/api/js/35/8/common.js:73:375
_.qn</<
https://maps.googleapis.com/maps-api-v3/api/js/35/8/common.js:138:172
c
https://maps.googleapis.com/maps-api-v3/api/js/35/8/common.js:67:82
<anonymous>
https://maps.googleapis.com/maps/api/js/AuthenticationService.Authenticate:1:22

map.component.html

<agm-map [latitude]="mapDetails.latitude" [longitude]="mapDetails.longitude" (mapClick)=" onChooseLocation($event)">
  <agm-marker [latitude]="mapDetails.latitude" [longitude]="mapDetails.longitude"></agm-marker>
</agm-map>

map.component.ts

import { Component, OnInit, Output, EventEmitter } from '@angular/core';
import { MapDetails } from '../shared/models/map-details.model';

@Component({
  selector: 'app-maps',
  templateUrl: './maps.component.html',
  styleUrls: ['./maps.component.css']
})
export class MapsComponent implements OnInit {
  mapDetails: MapDetails = new MapDetails();

  @Output() public mapClickEvent = new EventEmitter();
  constructor() { }

  ngOnInit() {
    this.mapDetails.latitude=6.9271;
    this.mapDetails.longitude=79.8612;
  }
  onChooseLocation(event){
      this.mapDetails.latitude=event.coords.lat;
      this.mapDetails.longitude=event.coords.lng;
      this.mapClickEvent.emit(this.mapDetails);

  }
}

用户布局.module.ts

import { JobDoneComponent } from './../../job-done/job-done.component';
import { RatingComponent } from './../../rating/rating.component';
import { NotificationsComponent } from './../../notifications/notifications.component';
import { ProvidedJobsComponent } from './../../provided-jobs/provided-jobs.component';
import { CompletedJobsComponent } from './../../completed-jobs/completed-jobs.component';
import { NgModule } from '@angular/core';
import { RouterModule } from '@angular/router';
import { CommonModule } from '@angular/common';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { UserLayoutRoutes } from './user-layout.routing';


import { UserProfileComponent } from '../../user-profile/user-profile.component';

import { ChartsModule } from 'ng2-charts';
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
import { ToastrModule } from 'ngx-toastr';
import {ComplainComponent} from '../../complain/complain.component';
import { UserLogInComponent } from 'app/user-log-in/user-log-in.component';
//import {MatButtonModule, MatCheckboxModule, MatDialog, MAT_DIALOG_DATA, MatDialogConfig} from '@angular/material';
import { MatFormFieldModule,MatCardModule,MatStepperModule,MatSelectModule,MatButtonModule, MatCheckboxModule, MatInputModule,MatDatepickerModule, MatNativeDateModule, MatToolbarModule, MatSidenavModule, MatIconModule, MatListModule} from '@angular/material';
import {MatDialogModule} from '@angular/material/dialog';

import { PostJobsComponent } from '../../post-jobs/post-jobs.component';
import { PostPaymentsComponent } from '../../post-payments/post-payments.component';
import {MapsComponent} from '../../maps/maps.component';
import { DraftPostComponent } from '../../draft-post/draft-post.component';
import { JobRequestComponent } from '../../job-request/job-request.component';
import { AgmCoreModule } from '@agm/core';


@NgModule({
  imports: [
    CommonModule,
    RouterModule.forChild(UserLayoutRoutes),
    FormsModule,
    ChartsModule,
    NgbModule,
    ToastrModule.forRoot(),
    AgmCoreModule.forRoot({
      apiKey:'My_API_KEY'
    }),
    MatDialogModule,
    MatFormFieldModule,
    MatCardModule,
    MatStepperModule,
    MatSelectModule,
    MatButtonModule, 
    MatCheckboxModule, 
    MatInputModule, 
    MatNativeDateModule,
    MatToolbarModule, 
    MatSidenavModule, 
    MatIconModule, 
    MatListModule
  ],
  declarations: [
    PostJobsComponent,
    PostPaymentsComponent,
    DraftPostComponent,
    UserProfileComponent,
    JobRequestComponent,
    ComplainComponent,
    MapsComponent,
    CompletedJobsComponent,
    ProvidedJobsComponent,
    NotificationsComponent,
    JobDoneComponent,
    RatingComponent
  ],
  entryComponents: [RatingComponent]
})
export class UserLayoutModule { }

【问题讨论】:

  • 请有人回答
  • 错误信息似乎很清楚。您在 AgmCoreModule.forRoot() 中应用的 API 密钥无效。在开发者控制台中仔细检查您的项目并检查 api 密钥是否正确。
  • 也没有购买新的 API Key。但仍然无法正常工作

标签: angular google-maps angular-google-maps


【解决方案1】:

您可能加载了两次 Google Maps API,请检查您是否在提供程序中加载它

uiGmapGoogleMapApi.then(function(maps) {});

同时还加载脚本标签

<script src="https://maps.googleapis.com/maps/api/js"></script>

尝试删除脚本标签,看看是否有效。

【讨论】:

    【解决方案2】:

    尽管在密钥已在多个地方使用的环境中,这可能不是最佳方法。它对我有用,因为我只在项目中的 2 个地方使用它。

    删除现有密钥并重新生成新密钥对我有用。

    【讨论】:

      猜你喜欢
      • 2022-10-22
      • 2016-08-02
      • 2020-09-06
      • 2020-12-22
      • 1970-01-01
      • 2015-09-07
      • 1970-01-01
      • 2020-10-07
      • 2016-06-01
      相关资源
      最近更新 更多