本节摘要:手机是 GIS 采集和展示的重要终端。本节讲移动端 GIS 技术选型、离线地图、定位采集——把 GIS 装进口袋。
阅读完本节,你应当能够:
移动端 GIS 主要场景:

| 方案 | 特点 | 适合 |
|---|---|---|
| 原生(ArcGIS Runtime) | 性能好,离线强 | 重采集、专业应用 |
| 跨平台(Flutter/RN) | 一套代码多端 | 中等复杂度 |
| Web/H5(Leaflet/Mapbox GL) | 免安装,轻量 | 轻量展示 |
移动端常无网络,离线地图是关键:
// Flutter 加载离线 mbtiles final offlineMap = MBTilesHelper.open('offline.mbtiles');
// 获取定位 final position = await Geolocator.getCurrentPosition( desiredAccuracy: LocationAccuracy.high ); // 采集点位 final feature = { 'type': 'Feature', 'geometry': {'type': 'Point', 'coordinates': [position.longitude, position.latitude]}, 'properties': {'name': '采集点1', 'photo': photoPath} };
现场采集要点:
现场采集离线存,有网同步:
⚠️ 常见坑:移动端全在线——无网络就废。关键场景做离线缓存和本地存储,有网再同步。
💡 关键直觉:移动 GIS 重采集和离线。原生性能好离线强,跨平台一套代码,Web 轻量。关键:离线缓存、高精度定位、本地存储+同步、电量优化。
移动端地图能力通常由 SDK 提供,选型看三件事:离线能力、坐标系支持、商业条款。
| SDK | 平台 | 离线 | 说明 |
|---|---|---|---|
| ArcGIS Runtime | Android/iOS | 强 | 专业 GIS,功能全 |
| Mapbox Mobile | Android/iOS | 支持矢量瓦片包 | 现代渲染 |
| 高德/百度 SDK | Android/iOS | 支持离线地图 | 国内底图合规 |
| OpenLayers/Leaflet | Web 容器 | 一般 | 套壳轻量 |
| osmdroid | Android | 强 | 开源离线地图 |
如果业务涉及测绘成果、坐标转换、离线要素编辑,优先 ArcGIS Runtime 或 osmdroid;纯展示类 App 用 Mapbox 或国内厂商 SDK 更省事。注意商用条款,部分 SDK 免费版有品牌和请求量限制。
离线地图的核心是"把瓦片提前下载到本地"。两种组织方式:
// Flutter 读取本地目录瓦片(示意) final tileUrl = 'file:///offline_tiles/{z}/{x}/{y}.png';
下载策略要注意:按"区域 + 层级范围"下载,而不是整级全球;只下载业务需要的层级(如 10-15 级);更新时按区域增量下载,避免整包重下。
移动端定位来源依次为 GPS、WiFi、基站、网络,精度从米级到百米级不等。GIS 采集对精度敏感,要点:
现场采集的数据最终要入库,同步接口要支持幂等:同一份数据重复提交不产生重复记录。常用方案是用客户端生成的 UUID 做主键,服务端 upsert;同步状态机分"待同步、同步中、已同步、冲突"四态,冲突时以服务端版本为准并提示用户。分页拉取增量数据时用游标而不是页码,避免数据变动导致漏传或重传。
下一节讲桌面 GIS 应用和插件开发。