Угловой 6 Как получить расстояние между двумя местами AGM - PullRequest
0 голосов
/ 18 октября 2018

Я получаю Направление между двумя точками, используя эту ссылку https://www.npmjs.com/package/agm-direction Теперь я хочу получить / рассчитать Расстояние между двумя точками, и я не понимаю, как это сделать.

В мой модуль

AgmCoreModule.forRoot({
  apiKey: 'My API Key....',
  libraries: ['geometry']
})

В мой компонент

getDirection() {
   this.origin = { lat: this.pick_latitude, lng: this.pick_longitude }
   this.destination = { lat: this.drop_latitude, lng: this.drop_longitude }
}

Мой вопрос : Как я могу получить расстояние между двумя точками, когда я использую вышеуказанную ссылку, чтобы получить направление пути?Пожалуйста, дайте мне предложение (Google Map API и т. Д.).Я использую Angular 6

Ответы [ 2 ]

0 голосов
/ 10 июля 2019

Вы можете сделать прямое расстояние с математикой, вам не нужно использовать Google API и использовать любой «кредит», делающий это.

Вот функция от широты / долготы до широты и долготы Iнаписал для использования в Angular 6 +:

  asTheCrowFlies(x1: number, y1: number, x2: number, y2: number) {
var result = 0;
const RADIANS: number = 180 / 3.14159265;
const METRES_IN_MILE: number = 1609.34;

if (x1 == x2 && y1 == y2) {
  result = 0;

} else {
  // Calculating Distance between Points
  var lt1 = x1 / RADIANS;
  var lg1 = y1 / RADIANS;
  var lt2 = x2 / RADIANS;
  var lg2 = y2 / RADIANS;

  // radius of earth in miles (3,958.8) * metres in a mile * position on surface of sphere...
  result = (3958.8 * METRES_IN_MILE) * Math.acos(Math.sin(lt1) * Math.sin(lt2) + Math.cos(lt1) * Math.cos(lt2) * Math.cos(lg2 - lg1));
}
return result; }

Если вы вычтете множитель «мили в метры», ответ будет в милях.Вам нужен только API Google для расстояний ROAD, а это не сделано с API MAP, который использует AGM, вместо этого вам нужен API ROUTE от Google.Я еще не видел угловой компонент для ROUTE API;большинство людей просто пишут сервис с помощью вызовов API.

0 голосов
/ 18 октября 2018

Вам необходимо использовать Google Geometry API

https://developers.google.com/maps/documentation/javascript/geometry

import {} from '@types/googlemaps';
import { AgmCoreModule, MapsAPILoader } from "@agm/core";

calculateDistance() {
    const mexicoCity = new google.maps.LatLng(19.432608, -99.133209.);
    const jacksonville = new google.maps.LatLng(40.730610, -73.935242.);
    const distance = google.maps.geometry.spherical.computeDistanceBetween(nyc, london);
  }

В вашем app.module.ts

AgmCoreModule.forRoot({
  apiKey: 'YOUR API KEY',
  libraries: ['geometry']
}),
...