Как использовать API матрицы Google Distance в Angular

Я пытаюсь использовать Google Distance Matrix API. https://developers.google.com/maps/documentation/distance-matrix/start. У меня есть необходимые параметры запроса, которые получены из текущего местоположения (начальная широта и долгота) и когда я нажимаю на маркер (я получаю конечную широту и долготу). Сейчас я пытаюсь вызвать API в служебном файле, он не работает должным образом.

Ниже приведен код службы: ниже приведены параметры запроса, переданные в объект sendQuery.

apiKeyToPass: "this will be apikey"
srcDestinationLat: 29.9809683
srcDestinationLng: 31.3377553
srcOriginLat: 11.127122499999999
srcOriginLng: 78.6568942

Вместо apikey я передаю apikey. Как передать вышеуказанные параметры sendQuery в приведенный ниже URL, чтобы я получил желаемый ответ.

getDistanceMatrix(sendQuery): Observable<any> {
       return this.http.get('https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins={{srcOriginLat}},{{srcOriginLng}}&destinations={{srcDestinationLat}},{{srcDestinationLng}}&key=apikey') 
    .map((response: Response) => {
        return response.json();
      })
      .catch(this.handleError);
  }

Когда я выполняю приведенный выше код, код запускается в цикл исключений вместо входа в цикл ответа.

2 ответа

Версия @agm/core — 1.0.0. Также необходимо установить @types/googlemaps. Далее необходимо импортировать

      import {} from 'googlemaps'; 

в свой компонент.

Вероятно, вы увидите сообщение об ошибке вроде: node_modules/@types/googlemaps/index.d.ts не является модулем. Чтобы исправить эту ошибку, просто создайте файл с именем index.d.ts в каталоге src и поместите следующую строку:

      declare module 'googlemaps'; 

Чтобы использовать службу матрицы расстояний, используйте следующее в своем компоненте:

      public getDistance(origin: LatLng, destination: LatLng) {
const matrix = new google.maps.DistanceMatrixService();
return new Promise((resolve, reject)=>{
  matrix.getDistanceMatrix({
  origins: [new google.maps.LatLng(origin.lat, origin.lng)],
  destinations: [new google.maps.LatLng(destination.lat,destination.lng)],
  travelMode: google.maps.TravelMode.DRIVING,
  }, function(response, status) {
    if(status === 'OK'){
      resolve(response)
    }else{
      reject(response);
    }
  });
})

}

Эта работа для меня:

public getDistancia(origen: string, destino: string) {
    return new google.maps.DistanceMatrixService().getDistanceMatrix({'origins': [origen], 'destinations': [destino], travelMode: 'DRIVING'}, (results: any) => {
        console.log('resultados distancia (mts) -- ', results.rows[0].elements[0].distance.value)
    });
}
Другие вопросы по тегам