我正在做我最后一年的專案,但我被困在距離矩陣中。我正在制作一個使用谷歌地圖的應用程式,但我不知道如何找到兩個地方之間的時間和距離。我讀了一些文章,但不明白我是顫振的初學者。
uj5u.com熱心網友回復:
首先,您需要一個 Google Maps API 密鑰,并且要獲得一個 Google 云帳戶,可以免費創建一個,并且您還可以免費試用,這對于研究專案來說已經足夠了。此鏈接可能有助于設定帳戶和專案:https : //developers.google.com/maps/documentation/distance-matrix/cloud-setup
帳戶和專案設定后,您需要啟用距離矩陣 API
然后創建一個 API 密鑰
擁有 API 密鑰后,您就可以開始使用 API:進行 API 呼叫所需的只是 API 密鑰以及起點和目的地位置(為此您可以使用緯度/經度、完整地址、地點 ID。 ...)。這是一個使用緯度、經度坐標的示例:
https://maps.googleapis.com/maps/api/distancematrix/json?destinations=40.659569,-73.933783&origins=40.6655101,-73.89188969999998&key=**YOUR_API_KEY_HERE**
您可以為起點和終點提供許多由管道(|)分隔的位置(例如:11.45455,-13.4675434|12.353645,-32.463634|11.45455,-13.4675434...),API 會將每個單個起點位置與所有目的地和每一對的回傳距離匹配(基本上一個請求將回傳起點乘以目的地結果)。
注意:我提供的示例非常簡單,但距離矩陣有更多功能(例如:考慮流量)請訪問此鏈接以了解 API 的功能概述。
撲
要在 Flutter 應用程式中呼叫 API,您需要一個 HTTP 客戶端,例如DIO:
import 'package:dio/dio.dart';
void getDistanceMatrix() async {
try {
var response = await Dio().get('https://maps.googleapis.com/maps/api/distancematrix/json?destinations=40.659569,-73.933783&origins=40.6655101,-73.89188969999998&key=YOUR_API_KEY_HERE');
print(response);
} catch (e) {
print(e);
}
}
要查看您將收到哪種型別的回復,請訪問此鏈接。
uj5u.com熱心網友回復:
您可以通過在 dart 中實作的 HaverSine 公式找到距離:
import'dart:math' as Math;
void main()=>print(getDistanceFromLatLonInKm(73.4545,73.4545,83.5454,83.5454));
double getDistanceFromLatLonInKm(lat1,lon1,lat2,lon2) {
var R = 6371; // Radius of the earth in km
var dLat = deg2rad(lat2-lat1); // deg2rad below
var dLon = deg2rad(lon2-lon1);
var a =
Math.sin(dLat/2) * Math.sin(dLat/2)
Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) *
Math.sin(dLon/2) * Math.sin(dLon/2)
;
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = R * c; // Distance in km
return d;
}
double deg2rad(deg) {
return deg * (Math.pi/180);
}
Output: 1139.9231530436646
源計算兩個經緯度點之間的距離?(Haversine 公式)歸功于 Chuck 和 @cmd_prompter。
選項 2
如果您正在尋找兩個位置(又名 LatLng)之間的最短距離,您可以使用https://pub.dev/packages/geolocator插件。
double distanceInMeters = await Geolocator().distanceBetween(52.2165157, 6.9437819, 52.3546274, 4.8285838);
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/393544.html
標籤:扑 谷歌地图 google-places-api google-distancematrix-api
