import 'package:google_maps_flutter/google_maps_flutter.dart';
const apiKey = "my api key";
class DistanceController{
void getDistance({LatLng source, LatLng destination})async{
Dio dio = new Dio();
Response response = await dio.get("https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=1.341786,103.826009&destinations=1.332747%2C,103.919106&key=$apiKey");
print('getiing distance:');
print(response.data);
}
}
上面是我的代码,我的输出是: {目的地地址:[],来源地址:[],行:[{元素:[{状态:NOT_FOUND}]}],状态:确定}
我的问题是,如何才能获得我在请求中给出的2个LatLng之间的距离(以m / km为单位)?如果dio无法返回我的距离,还有其他可以使用的软件包吗?
答案 0 :(得分:0)
您可以使用以下功能进行操作;只要您必须来源和目的地LongLat。
import 'dart:math' show cos, sqrt, asin;
double calculateDistance(lat1, lon1, lat2, lon2){
var p = 0.017453292519943295;
var c = cos;
var a = 0.5 - c((lat2 - lat1) * p)/2 +
c(lat1 * p) * c(lat2 * p) *
(1 - c((lon2 - lon1) * p))/2;
return 12742 * asin(sqrt(a));
}