Flutter Google Maps Динамическое увеличение и уменьшение с помощью радиусного круга - PullRequest
0 голосов
/ 09 июля 2020

В карте Google у меня радиус круга. Этот круг можно делать меньше и больше, нажимая на кнопки.

Мой код просто не работает должным образом, потому что, как только я увеличиваю круг, масштаб становится ближе. Как только я сделаю круг меньше, он еще больше уменьшится.

Кнопки затем вызывают эту функцию:

 void addRadiusToMap(radius, location) {
    setState(() {
      double reciprocal(double d) => 1 * d;
      circle.clear();
      circle.add(Circle(
        circleId: CircleId("1"),
        center: location,
        radius: reciprocal(radius.toDouble()),
        strokeWidth: 2,
        fillColor: Color.fromARGB(102, 51, 153, 5)
      ));
      mapController.animateCamera(CameraUpdate.newCameraPosition(
          CameraPosition(target: location, zoom: radius/71)));
    });
  }

После этого это правило управляет увеличением и уменьшением масштаба:

mapController.animateCamera(CameraUpdate.newCameraPosition(
              CameraPosition(target: location, zoom: radius/71)));

Здесь я делю радиус на 71, чтобы получить нормальное значение масштабирования, но как только радиус станет больше, ответ станет больше и масштаб будет увеличен. У кого-нибудь есть другое решение для этого?

1 Ответ

0 голосов
/ 10 июля 2020

Это работает для меня:

 double zoomLevel = 11;
      if (circle != null) {
        double radius = _circleRadius + _circleRadius / 2;
        double scale = radius / 400;
        zoomLevel = (16 - scale / 2);
      }
...