如何使用新的Google地图小部件在Flutter上的两个地理位置之间绘制路线?有一些关于如何使用先前的小部件执行此操作的教程,但现在已弃用。
答案 0 :(得分:0)
有很多实现方法。这是我几周前所做的。首先,我有这些插件:
import 'package:flutter_google_places/flutter_google_places.dart';
import 'package:flutter_polyline_points/flutter_polyline_points.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
接下来创建您的GoogleMap对象:
LatLng izp = LatLng(-3.386943, 29.371636);
GoogleMap googleMap = GoogleMap(
initialCameraPosition: CameraPosition(target: izp, zoom: 10.0),
compassEnabled: true,
scrollGesturesEnabled: true,
zoomGesturesEnabled: true,
onMapCreated: (g) {
gmc = g;//for mapcontroller if any
},
markers: {},
polylines: {},//initialize the polylines list
);
从Google路线,获取您两点之间的路线。 解码结果并获得分数。应该在这个位置:
dynamic directions = decodedResult["routes"][0]["overview_polyline"]['points'];
创建PolylinePoints对象并解码您的路线对象:
PolylinePoints points = new PolylinePoints();
List<PointLatLng> result = points.decodePolyline(directions);
从LatLng
的列表创建PointLatLng
的列表:
List<LatLng> po = [];
result.forEach((f) {
po.add(LatLng(f.latitude, f.longitude));
});
然后使用LatLng
列表创建一个折线对象:
Polyline route = new Polyline(
polylineId: PolylineId("route"),
geodesic: true,
points: po,
width: 20,
color: Colors.blue);
然后将折线对象设置为您的google map对象:
setState(() {
//if you created markers, add them too if you wish
googleMap.markers.add(marker);
googleMap.markers.add(marker2);
googleMap.polylines.add(route);
/*if you associated a googlemapcontroller, you can do further actions like zooming...*/
});
我认为这应该有所帮助。祝你好运