Как подогнать полилинии к кривым улиц в трепетании карт Google?
Как подогнать полилинии к кривым улиц в трепетании карт Google?
Я играл с Полилиниями в google_maps_flutter в течение 2 месяцев, и у меня есть следующие сомнения:
- Полилинии не следуют изгибам улиц или шоссе.
- У Polylines есть обратный вызов OnTap, но на мульти-полилиниях я не могу получить какой-либо идентификатор или атрибут, чтобы отличить, кого я нажал.
Кто-нибудь может мне помочь с этим?
Я новичок во Флаттере и использую API направлений от Google. Возможно, не правильный API для решения этой проблемы.
Мне нужно, чтобы набор ломаных линий шел по кривым улицам.
Полилинии в google_maps_flutter
PS: Извините, если мой код кровоточит ваши глаза!
виджет google_maps_flutter:
GoogleMap(
onMapCreated: (controller) {
_mapController = controller;
},
initialCameraPosition: CameraPosition(
target: getCurrentLocation(),
zoom: 15,
),
mapType: _currentMapType,
myLocationEnabled: true,
myLocationButtonEnabled: false,
compassEnabled: true,
rotateGesturesEnabled: true,
markers: _markers,
polylines: _polyline,
)
Установите состояние, чтобы показать ломаную линию и маркеры:
setState(
() {
_markers.clear();
for (var point in itinerary) {
_markers.add(
Marker(
markerId: MarkerId("stop ${point.latitude}"),
position: LatLng(point.latitude, point.longitude),
infoWindow: InfoWindow(title: point.address),
),
);
}
_polyline.clear();
_polyline.add(
flutter.Polyline(
polylineId: PolylineId("route"),
points: ccc,
width: 8,
color: Colors.red,
geodesic: true,
jointType: JointType.round,
),
);
_mapController.animateCamera(
CameraUpdate.newLatLngZoom(
LatLng(origin.lat, origin.lng), 13.0),
);
},
);
Вызов API Google Directions:
GoogleMapsDirections(apiKey: apiKey).directions(origin, destination, waypoints: itinerary, ).then((DirectionsResponse response) { return response }
3 ответа
Я получил некоторый совет от члена Github, который сказал мне попробовать SnapToRoad, теперь я получаю более подробную информацию о маршруте, но шоссе по-прежнему путешествуют на вертолете.
Простой GET для https://roads.googleapis.com/v1/snapToRoads с API_KEy и некоторыми пунктами моей предыдущей полилинии помогает.
Вот ссылка SnapToRoad
Это потому, что ломаная линия - это просто линия, которую вы рисуете. Чтобы сделать то, что вам нужно, нужно проложить маршрут между точками, а с помощью сгенерированных координат сделать ломаную линию.
Проверьте этот учебник, который я нашел: https://www.developerlibs.com/2018/08/flutter-how-can-draw-route-on-google.html