w_tools_map 1.2.0
w_tools_map: ^1.2.0 copied to clipboard
w_tools 的地图组件层:基于 google_maps_flutter 提供 WMap / WMapZone / WMapConfig,支持 Marker 渲染、选中与关闭相机动画及事件回调。
1.2.0 #
1.1.0 #
Added #
WMapZone.iconAsset+imagePixelRatio:直接给资产路径,包内部rootBundle加载并缓存 (同一路径只解码一次),业务层不必 import google_maps_flutter、也不会重复创建 BitmapDescriptor。 优先级:iconBuilder>icon>iconAsset> 默认图标。WMapItemMapper.position改为返回 record({double latitude, double longitude}), 业务层不接触LatLng。WMap收到数据更新时setState,保证异步图标加载完成后地图会重绘。WMapConfig.padding:透传GoogleMap.padding,底部有选中卡片/顶部有筛选栏时 把可视中心抬起来,避免 marker 被遮住。WMapZone.iconBuilder:按条目决定 Marker 图标(优先于icon), 用于"旗舰店/普通店/暂停营业"这类差异化图标。WMapItemMapper<T>+WMapZone(mapper: ...):业务模型不必实现WMapItem。 json_serializable 生成的模型用这种方式接入,避免手改生成类。WMapZone/WMap/WMapConfig/WMapController的泛型约束也随之放宽为T。WMapController:业务侧可通过mapController.closeSelection(item)关闭选中。 之前closeSelection定义在私有的_WMapState里,WMapConfig.onItemClosed永远无法触发。WMapConfig.onMapTap:点地图空白处(非 Marker)的回调,常用于"点空白关闭选中"。WMapZone.addDataUpdatedListener/removeDataUpdatedListener: 支持多个WMap共享同一 zone(原来的单值onDataUpdated会被后注册的覆盖)。- 数据异步到达时自动补一次相机移动:
initialCameraPosition只在首帧使用, 之前 maps 为空后补数据,地图会一直停在默认位置。
Changed #
- MarkerId 兜底规则从
hashCode改为经纬度('22.3_114.2'),对象重建后仍然稳定。 showMarkerInfoWindow改为等待animateCamera完成后再调用, 避免相机动画把刚打开的 InfoWindow 覆盖掉。
Deprecated #
WMapZone.onDataUpdated:改用addDataUpdatedListener/removeDataUpdatedListener。
Packaging #
example/改为独立包(去掉resolution: workspace):从 pub.dev 下载本包后cd example && flutter pub get可以直接跑起来,不再依赖仓库根的 workspace。- 新增本包自己的
.pubignore,显式排除test/、构建产物与示例的 lock 文件。
1.0.0 #
首次发布。
- 新增
WMapItem:业务数据模型契约(id / 名称 / 经纬度) - 新增
WMapZone:持有一组地图数据、Marker 集合与控制器,支持update刷新 - 新增
WMap:基于 Google Maps 渲染地图与 Marker,并管理相机动画 - 新增
WMapConfig:选中 / 关闭缩放、纬度偏移与事件回调