Как подогнать полилинии к кривым улиц в трепетании карт 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

Попробуйте этот паб: google_map_polyline

Другие вопросы по тегам