使用flutter_map添加地图时出现Unable to load asset错误求助
问题原因与解决方案
错误根源:你误用了
AssetTileProvider()——这个Provider的作用是加载本地assets目录中的离线地图瓦片,但你传入的是在线OpenStreetMap瓦片的URL,Flutter会把这个URL当作本地资源路径去查找,所以才会不断报"Unable to load asset"的错误。修复方法:将
AssetTileProvider()替换为NetworkTileProvider(),这个Provider专门用于从网络加载在线瓦片资源。
修改后的完整代码:
FlutterMap( mapController: mapController, options: MapOptions( initialCenter: const LatLng(51.5, -0.09), initialZoom: 5, ), children: [ TileLayer( tileProvider: NetworkTileProvider(), urlTemplate: 'https://tile.openstreetmap.org/{z}/{x}/{y}.png', ), ], ),
- 补充说明:如果后续需要使用离线瓦片,才需要用
AssetTileProvider(),此时要将urlTemplate改为本地assets路径(比如'assets/map_tiles/{z}/{x}/{y}.png'),同时在pubspec.yaml中声明对应的资源目录:
flutter: assets: - assets/map_tiles/
内容的提问来源于stack exchange,提问作者Huy Nguyen
相关产品推荐
相关产品推荐

