Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 如何在Flitter中显示谷歌地图中的旅行时间?_Json_Google Maps_Http_Flutter_Duration - Fatal编程技术网

Json 如何在Flitter中显示谷歌地图中的旅行时间?

Json 如何在Flitter中显示谷歌地图中的旅行时间?,json,google-maps,http,flutter,duration,Json,Google Maps,Http,Flutter,Duration,我想从JSON数据中获取用户当前位置的行程时间。目前,我只显示从当前位置到目标的多段线。我的代码: import 'package:http/http.dart' as http; import 'dart:convert'; import 'dart:async'; const apiKey = "xxxxxxx"; class GoogleMapsServices { Future<String> getRouteCoordinates(LatLng l1, LatL

我想从JSON数据中获取用户当前位置的行程时间。目前,我只显示从当前位置到目标的多段线。我的代码:

import 'package:http/http.dart' as http;
import 'dart:convert';
import 'dart:async';

const apiKey = "xxxxxxx";

  class GoogleMapsServices {
  Future<String> getRouteCoordinates(LatLng l1, LatLng l2) async {
  String url = "https://maps.googleapis.com/maps/api/directions/json?origin=${l1
      .latitude},${l1.longitude}&destination=${l2.latitude},${l2
      .longitude}&mode=walking&key=$apiKey";
  http.Response response = await http.get(url);
  Map values = jsonDecode(response.body);
  print("====================>>>>>>>>${values}");

  return values["routes"]["distance"]["duration"]["overview_polyline"]["points"];

  }
  }```

 List<LatLng> _convertToLatLng(List points) {
    List<LatLng> result = <LatLng>[];
    for (int i = 0; i < points.length; i++) {
      if (i % 2 != 0) {
        result.add(LatLng(points[i - 1], points[i]));
      }
    }
void createRoute(String encondedPoly) {
    _polyLines.add(Polyline(
        polylineId: PolylineId(latLng.toString()),
        width: 4,
        points: _convertToLatLng(_decodePoly(encondedPoly)),
        color: Colors.deepOrange),
    );
  }

List _decodePoly(String poly) {
    var list = poly.codeUnits;
    var lList = new List();
    int index = 0;
    int len = poly.length;
    int c = 0;
    do {
      var shift = 0;
      int result = 0;

      do {
        c = list[index] - 63;
        result |= (c & 0x1F) << (shift * 5);
        index++;
        shift++;
      } while (c >= 32);
      if (result & 1 == 1) {
        result = ~result;
      }
      var result1 = (result >> 1) * 0.00001;
      lList.add(result1);
    } while (index < len);

    for (var i = 2; i < lList.length; i++)
      lList[i] += lList[i - 2];

    print(lList.toString());

    return lList;
  }
Widget _mapWidget() {
    return GoogleMap(
      mapType: MapType.hybrid,
      polylines: polyLines,
      markers: _createMarker(),
      initialCameraPosition: CameraPosition(
          target: latLng, zoom: 12.0),
      onMapCreated: (GoogleMapController controller) {
        _controller = controller;
        _setMapPins();
      },
      onCameraMove: onCameraMove,
      tiltGesturesEnabled: false,
      onTap: (LatLng location) {
        setState(() {
          _pinPillPosition = -100;

          _pinPillPosition2 = -100;
          _polyLines.clear();
        });
      },
    );
  }
    return result;
  }
void sendRequest() async {
    LatLng destination = LatLng(52.523778, 13.405193);
    String route = await _googleMapsServices.getRouteCoordinates(
        latLng, destination);
    createRoute(route);
  }


import'package:http/http.dart'作为http;
导入“dart:convert”;
导入“dart:async”;
const apiKey=“xxxxxxx”;
GoogleMapsServices类{
未来的getRouteCoordinates(LatLng l1、LatLng l2)异步{
字符串url=”https://maps.googleapis.com/maps/api/directions/json?origin=${l1
.latitude},${l1.longitude}和destination=${l2.latitude},${l2
.longitude}&mode=walking&key=$apiKey”;
http.Response-Response=等待http.get(url);
Map values=jsonDecode(response.body);
打印(“===================>>>>>>${values}”);
返回值[“路线”][“距离”][“持续时间”][“概述”\u多段线”][“点”];
}
}```
列表(列表点){
列表结果=[];
对于(int i=0;i>1)*0.00001;
添加(结果1);
}而(指数

我希望在单击标记时弹出的药丸容器中显示时间和距离。提前感谢。

启用距离矩阵API后,您可以使用它