在抖动中使用dio获取源和目标之间的距离

时间:2020-03-28 04:41:59

标签: flutter dart

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无法返回我的距离,还有其他可以使用的软件包吗?

1 个答案:

答案 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));
  }

贷记@westdabestdb