FlutterMap приближается к белому экрану

При увеличении масштаба карты в конце создается белый экран. Кто-нибудь знает, почему?

Бывает как на Android, так и на iOS. На эмуляторе / симуляторе и на физическом устройстве в режиме выпуска. Происходит со всеми тайловыми сервисами: Google, MapBox и OpenStreetMap.

Этого не происходит с пакетами Google Maps и MapBox, но они оба настолько медленные и постоянно дергают представление списка при прокрутке страницы, на которой они отображаются.

Эта гифка показывает, что происходит:

введите описание изображения здесь

Вот мой минимальный пример кода:

Widget build(BuildContext context) {
  return Scaffold(
      body: FlutterMap(
    options: MapOptions(
      center: LatLng(routeLat, routeLong),
      zoom: 17.0,
    ),
    layers: [
      TileLayerOptions(
        urlTemplate:
            mapStringAndKey
      ),
      MarkerLayerOptions(
        markers: [
          Marker(
            width: 150.0,
            height: 100.0,
            point: LatLng(routeLat, routeLong),
            builder: (ctx) => Container(
              child: Column(
                children: [
                  Icon(
                    Icons.location_on,
                    size: 40,
                    color: Colors.blue,
                  ),
                ],
              ),
            ),
          ),
        ],
      ),
    ],
  ));
}

Спасибо за любые идеи.


person Wesley Barnes    schedule 21.01.2021    source источник
comment
Я добавил свойство maxZoom: 18, похоже, не позволяет ему переходить на белый экран. Не так близко / ясно, как карты Google для крупных планов спутникового обзора, но это нормально.   -  person Wesley Barnes    schedule 21.01.2021


Ответы (2)


Вероятно, это связано с тем, что FlutterMap пытается загрузить фрагменты карты для неподдерживаемого уровня масштабирования. Каждый раз, когда вы увеличиваете масштаб, FlutterMap выбирает плитки для нового уровня масштабирования. Вы должны определить свойство maxZoom, чтобы пользователь не слишком увеличивал масштаб и не отображал белый экран.

FlutterMap(
   options: MapOptions(
      maxZoom: // your maxZoom value
   ),
   // ...
)
person Guillaume Roux    schedule 21.01.2021

FlutterMap обеспечивает максимальное и минимальное масштабирование, и это, вероятно, правильно, но использование MapBox или карт Google делает масштабирование лучше.

В итоге я использовал пакет MapBox https://pub.dev/packages/mapbox_gl в полноэкранном режиме. страница, где он не влияет на прокрутку, как в режиме прокрутки, и будет использовать статическое изображение или flutter_map в режиме прокрутки, чтобы обеспечить быстрый просмотр прокрутки и перенаправить пользователя оттуда на карту.

person Wesley Barnes    schedule 22.01.2021