J'utilise l'officiel plugin Google Maps Flutter pour afficher les cartes et cela fonctionne parfaitement bien mais maintenant je veux montrer un itinéraire sur la carte, donc j'utilise ce package pour me fournir l'itinéraire, il me suffit d'ajouter les Polylignes .
J'ai eu le même problème résolu en utilisant ce plugin google_maps_flutter: ^ 0.5.19
import 'package:google_maps_flutter/google_maps_flutter.Dart';
static const LatLng _center = const LatLng(33.738045, 73.084488);
final Set<Marker> _markers = {};
final Set<Polyline>_polyline={};
//add your lat and lng where you wants to draw polyline
LatLng _lastMapPosition = _center;
List<LatLng> latlng = List();
LatLng _new = LatLng(33.738045, 73.084488);
LatLng _news = LatLng(33.567997728, 72.635997456);
latlng.add(_new);
latlng.add(_news);
//call this method on button click that will draw a polyline and markers
void _onAddMarkerButtonPressed() {
getDistanceTime();
setState(() {
_markers.add(Marker(
// This marker id can be anything that uniquely identifies each marker.
markerId: MarkerId(_lastMapPosition.toString()),
//_lastMapPosition is any coordinate which should be your default
//position when map opens up
position: _lastMapPosition,
infoWindow: InfoWindow(
title: 'Really cool place',
snippet: '5 Star Rating',
),
icon: BitmapDescriptor.defaultMarker,
));
_polyline.add(Polyline(
polylineId: PolylineId(_lastMapPosition.toString()),
visible: true,
//latlng is List<LatLng>
points: latlng,
color: Colors.blue,
));
});
//in your build widget method
GoogleMap(
//that needs a list<Polyline>
polylines:_polyline,
markers: _markers,
onMapCreated: _onMapCreated,
myLocationEnabled:true,
onCameraMove: _onCameraMove,
initialCameraPosition: CameraPosition(
target: _center,
zoom: 11.0,
),
mapType: MapType.normal,
);
}
Polyline n'est actuellement pas disponible (2019-01-27) dans le plugin officiel Google Maps Flutter . Cependant, deux demandes d'extraction ont ajouté cette fonctionnalité:
La requête d'extraction 1121 contient un exemple de code sur la façon d'utiliser la fonctionnalité Polyligne.
EDIT: Ajout d'informations sur la façon d'utiliser la fonctionnalité:
Attendez que la branche 1121 soit fusionnée (si c'est le cas) dans la ligne de base ou clonez la fourche repo . Une fois cloné
Copiez le dossier packages/google_maps_flutter au même niveau que votre application flutter par exemple:
- workspace
|_myflutterapp
|_lib
|_Android
|_ios
|_pubspec.yaml
|_google_maps_flutter
Modifiez ensuite vos dépendances pour pointer vers cette version et non la version officielle, c'est-à-dire dans votre fichier pubspec.yaml, changez-la en:
dev_dependencies:
flutter_test:
sdk: flutter
google_maps_flutter:
path: ../google_maps_flutter
Suivez ensuite les instructions sur Google Flutter bibliothèque
Un exemple est inclus dans le package google_maps_futter qui montre exactement comment utiliser les polylignes et les taps.
Google Maps pour Flutter prend déjà en charge les polylignes dans la version officielle 0.5.6 https://pub.dartlang.org/packages/google_maps_flutter#056
Il s'agit d'une réponse élargie à la réponse de Jawad. J'ai utilisé le plugin google maps officiel
google_maps_flutter 0.5.19 + 2
Le code de travail complet est donné ci-dessous.
import 'package:flutter/material.Dart';
import 'package:google_maps_flutter/google_maps_flutter.Dart';
class TestMapPolyline extends StatefulWidget {
@override
_TestMapPolylineState createState() => _TestMapPolylineState();
}
class _TestMapPolylineState extends State<TestMapPolyline> {
final Set<Marker> _markers = {};
final Set<Polyline> _polyline = {};
GoogleMapController controller;
List<LatLng> latlngSegment1 = List();
List<LatLng> latlngSegment2 = List();
static LatLng _lat1 = LatLng(13.035606, 77.562381);
static LatLng _lat2 = LatLng(13.070632, 77.693071);
static LatLng _lat3 = LatLng(12.970387, 77.693621);
static LatLng _lat4 = LatLng(12.858433, 77.575691);
static LatLng _lat5 = LatLng(12.948029, 77.472936);
static LatLng _lat6 = LatLng(13.069280, 77.455844);
LatLng _lastMapPosition = _lat1;
@override
void initState() {
super.initState();
//line segment 1
latlngSegment1.add(_lat1);
latlngSegment1.add(_lat2);
latlngSegment1.add(_lat3);
latlngSegment1.add(_lat4);
//line segment 2
latlngSegment2.add(_lat4);
latlngSegment2.add(_lat5);
latlngSegment2.add(_lat6);
latlngSegment2.add(_lat1);
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: GoogleMap(
//that needs a list<Polyline>
polylines: _polyline,
markers: _markers,
onMapCreated: _onMapCreated,
initialCameraPosition: CameraPosition(
target: _lastMapPosition,
zoom: 11.0,
),
mapType: MapType.normal,
),
);
}
void _onMapCreated(GoogleMapController controllerParam) {
setState(() {
controller = controllerParam;
_markers.add(Marker(
// This marker id can be anything that uniquely identifies each marker.
markerId: MarkerId(_lastMapPosition.toString()),
//_lastMapPosition is any coordinate which should be your default
//position when map opens up
position: _lastMapPosition,
infoWindow: InfoWindow(
title: 'Awesome Polyline tutorial',
snippet: 'This is a snippet',
),
));
_polyline.add(Polyline(
polylineId: PolylineId('line1'),
visible: true,
//latlng is List<LatLng>
points: latlngSegment1,
width: 2,
color: Colors.blue,
));
//different sections of polyline can have different colors
_polyline.add(Polyline(
polylineId: PolylineId('line2'),
visible: true,
//latlng is List<LatLng>
points: latlngSegment2,
width: 2,
color: Colors.red,
));
});
}
}
Vous pouvez utiliser cette lib
import 'package:map_view/map_view.Dart';
import 'package:map_view/polyline.Dart';
...
MapView mapView = MapView();
mapView.addPolyline(Polyline('my_polyline', [
Location(45.52309483308097, -122.67339684069155),
Location(45.52298442915803, -122.66339991241693),
]));