IONIC 3: Uncaught (в обещании): ReferenceError: Google не определен ReferenceError
Как твои дела?. Я изучаю Google Maps с учебником Ionic 3. Я сделал все, что там объясняется, но при запуске проекта появляется эта ошибка. Я исследовал много, но ничего не работает. Спасибо!.
Error: Uncaught (in promise): ReferenceError: google is not defined
ReferenceError: google is not defined
Это мой код:
home.ts
import { Component, ViewChild, ElementRef } from '@angular/core';
import { NavController } from 'ionic-angular';
import { IonicPage } from 'ionic-angular';
declare var google;
@IonicPage()
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
@ViewChild('map') mapElement:ElementRef;
map: any;
start = 'chicago, il';
end = 'chicago, il';
directionsService = new google.maps.DirectionsService;
directionsDisplay = new google.maps.DirectionsRenderer;
constructor(public navCtrl: NavController) {
}
ionViewLoad(){
this.initMap();
}
initMap(){
this.map = new google.maps.Map(this.mapElement.nativeElement,
{
zoom: 7,
center: {lat: 41.85, lng: -87.65}
});
this.directionsDisplay.setMap(this.map);
}
calculateAndDisplayRoute(){
this.directionsService.route({
origin: this.start,
destination: this.end,
travelMode: 'DRIVING',
}, (response, status) => {
if(status == 'OK'){
this.directionsDisplay.setDirections(response);
}else{
window.alert('Directions request failed due to ' +
status);
}
});
}
}
3 ответа
Убедитесь, что вы используете HTTPS при загрузке javascript!
Измените это
<script src="http://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY"></script>
Чтобы
<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY"></script>
Убедитесь, что вы не используете "async" и "defer" в своем скрипте при загрузке Google Maps API. Если вы используете их, пожалуйста, удалите их. Это будет работать нормально. Используйте это так:
<script src="http://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY"></script>
Пожалуйста, ознакомьтесь с этой проблемой, опубликованной на форуме Ionic для получения подробных указаний:
Проблема размещена на Ionic Forum
Надеюсь, что это поможет вам. Ура!!!
Вам нужно declare
как показано ниже, где вы не сделали этого в своем коде.
declare var google: any;
Примерно такой же вопрос по Git-репо
Даже если вы объявите Google, вы должны "дождаться" загрузки устройства.
Вы пытались использовать setTimeout()
?
Например:
ionViewLoad(){
setTimeout(()=>{ this.initMap(); },100);
}