Как исправить «InvalidValueError» в Angular 6 - PullRequest
0 голосов
/ 01 января 2019

Я использую Angular 6 для запуска карты Google с указаниями, используя API маршрутов Google Maps.После того, как я реализую код.консоль сообщает следующее сообщение об ошибке:

Uncaught (в обещании) Jc {сообщение: «initMap не является функцией», имя: «InvalidValueError», стек: «Ошибка» при новом Jc (* 1004)*https://maps.googleapis.com/m…F5xxXLWf2ZqIDEfUDitY7Ncs&callback=initMap:123:108"} сообщение: «initMap не является функцией» имя: «InvalidValueError»

home.component.ts:

import { Component, OnInit } from '@angular/core';
declare var google: any;

@Component({
  selector: 'app-home',
  templateUrl: './home.component.html',
  styleUrls: ['../../resources/css/style.min.css', '../../resources/css/bt.min.css']
})

// declare var calculateAndDisplayRoute(directionsService, directionsDisplay) : any;

export class HomeComponent implements OnInit {

    initMap() {
        var directionsService = new google.maps.DirectionsService;
        var directionsDisplay = new google.maps.DirectionsRenderer;
        var map = new google.maps.Map(document.getElementById('map'), {
            zoom: 7,
            center: {lat: 41.85, lng: -87.65}
        });
        directionsDisplay.setMap(map);

        var onChangeHandler = function() {
            this.calculateAndDisplayRoute(directionsService, directionsDisplay);
        };
        document.getElementById('start').addEventListener('change', onChangeHandler);
        document.getElementById('end').addEventListener('change', onChangeHandler);
    }

    calculateAndDisplayRoute(directionsService, directionsDisplay) {
        directionsService.route({
            origin: (<HTMLInputElement>document.getElementById('start')).value,
            destination: (<HTMLInputElement>document.getElementById('end')).value,
            travelMode: 'DRIVING'
        }, function(response, status) {
            if (status === 'OK') {
                directionsDisplay.setDirections(response);
            } 
            else {
                window.alert('Directions request failed due to ' + status);
            }
        });
    }

    constructor() {

    }

    ngOnInit() {
        this.initMap();
    }

}

Понятия не имею, почему возникает эта ошибкасообщение. Кто-нибудь может помочь?

1 Ответ

0 голосов
/ 02 января 2019

По-видимому, эта ошибка возникает из-за присутствия параметра callback при загрузке Google Maps JavaScript API:

<script async defer
  src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap">
</script>

Поскольку ваша карта инициализируется с помощью метода жизненного цикла ngOnInit, параметр обратного вызова может бытьотказались от URL.

Вот демонстрационная версия , которая демонстрирует, как использовать службу маршрутов Google Maps с приложением Angular2 +

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...