繁体   English   中英

在 Tomtom Map API 中使用折线

[英]Using polyline in Tomtom Map API

我的代码有问题,我无法为最终标记创建路由。 今天我的代码只是通过Tomtom API标记了最终地址,但我无法在点之间制作轨迹。

我不知道如何在 tomtom API 中实现这一点。

import "package:flutter/material.dart";
import "package:flutter_map/flutter_map.dart";
import 'package:geolocator/geolocator.dart';
import "package:latlong2/latlong.dart";
import "package:http/http.dart" as http;
import "dart:convert" as convert;
import 'package:location/location.dart';
import 'package:flutter_polyline_points/flutter_polyline_points.dart';
import 'package:syncfusion_flutter_maps/maps.dart';

class mapa extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return mapaState();
  }
}

class mapaState extends State<mapa> {
  final String apiKey = "5ffCTiHClrJBxXGqLadlrjmh3vFVxCVs";
  final List<Marker> markers = List.empty(growable: true);

  @override
  Widget build(BuildContext context) {
    final tomtomHQ = new LatLng(-23.7512754, -46.6824583);

    final initialMarker = new Marker(
      width: 50.0,
      height: 50.0,
      point: tomtomHQ,
      builder: (BuildContext context) =>
          const Icon(Icons.location_on, size: 60.0, color: Colors.red),
    );
    markers.add(initialMarker);

    getAddresses(value, lat, lon) async {
      final Map<String, String> queryParameters = {'key': '$apiKey'};
      queryParameters['lat'] = '$lat';
      queryParameters['lon'] = '$lon';
      var response = await http.get(Uri.https(
          'api.tomtom.com', '/search/2/search/$value.json', queryParameters));
      var jsonData = convert.jsonDecode(response.body);
      print('$jsonData');
      var results = jsonData['results'];
      for (var element in results) {
        var position = element['position'];
        var marker = new Marker(
          point: new LatLng(position['lat'], position['lon']),
          width: 50.0,
          height: 50.0,
          builder: (BuildContext context) =>
              const Icon(Icons.location_on, size: 40.0, color: Colors.blue),
        );
        markers.add(marker);
      }
    }

    return MaterialApp(
      title: "TomTom Map",
      home: Scaffold(
        resizeToAvoidBottomInset: false,
        body: Center(
            child: Stack(
          children: <Widget>[
            FlutterMap(
              options: new MapOptions(center: tomtomHQ, zoom: 13.0),
              layers: [
                new TileLayerOptions(
                  urlTemplate: "https://api.tomtom.com/map/1/tile/basic/main/"
                      "{z}/{x}/{y}.png?key={apiKey}",
                  additionalOptions: {"apiKey": apiKey},
                ),
                new MarkerLayerOptions(
                  markers: markers,
                ),
              ],
            ),
            Container(
                padding: EdgeInsets.only(top: 50),
                alignment: Alignment.topRight,
                child: TextField(
                  onSubmitted: (value) {
                    print('$value');
                    getAddresses(value, tomtomHQ.latitude, tomtomHQ.longitude);
                  },
                ))
          ],
        )),
      ),
    );
  }
}

您正在使用 flutter_map,因此最好是使用PolylineLayer()创建一个包含从TomTom Routing API检索的点的折线的层。 需要转换的点列表

[{
  "latitude": 52.50931,
  "longitude": 13.42937
},]

[LatLng(52.50931, 13.42937),]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM