FlutterMap无法拖拽且捏合缩放时显示灰色屏幕问题求助
FlutterMap无法拖拽且捏合缩放时显示灰色屏幕问题求助
大家好,我在Flutter项目里用flutter_map包的时候遇到了个棘手的问题:地图没法拖拽,而且捏合缩放的时候直接变成灰色屏幕了。初始的瓦片加载是正常的,但拖拽、缩放这些交互完全不符合预期。我怀疑是不是外部传入的MapController有问题(因为之后要做动态更新所以必须用外部的),或者是move()方法在拖拽的时候过早重新定位导致的?
环境信息
我的pubspec相关依赖版本如下:
environment: sdk: ">=3.7.0 <=3.7.2" flutter: ^3.29.2 ... flutter_map: ^8.1.1 latlong2: ^0.9.1
相关代码
父组件中初始化MapController并传入的NewGeoMap组件代码:
import 'package:flutter/material.dart'; import 'package:flutter_map/flutter_map.dart'; import 'package:siren_flutter/data/cached_tile_provider.dart'; class NewGeoMap extends StatefulWidget { const NewGeoMap({Key? key, required this.mapController}) : super(key: key); final MapController mapController; @override State<NewGeoMap> createState() => _NewGeoMapState(); } class _NewGeoMapState extends State<NewGeoMap> { @override Widget build(BuildContext context) { return FlutterMap( mapController: widget.mapController, options: MapOptions( interactionOptions: InteractionOptions( flags: InteractiveFlag.all ), onPositionChanged: (position, hasGesture) { if (hasGesture) { widget.mapController.move(position.center, position.zoom); } } ), children: [ TileLayer( urlTemplate: "https://tile.openstreetmap.org/{z}/{x}/{y}.png", ) ]); } }
已尝试的解决方法
- 在真机上运行,并且在
onPositionChanged里加了debugPrint调试 - 用
onMapReady确认MapController是否已经正确绑定 - 替换了TileLayer的urlTemplate,怀疑是OpenStreetMap的问题
其中第1、3个尝试没有得到有效的信息或改善;第2个尝试发现move()方法返回false,因为widget.mapController.center和position.center是同一个值,但在拖拽手势过程中地图还是会被重新定位。
内容来源于stack exchange
相关产品推荐
相关产品推荐

