Flutter如何将HTTP请求返回的经纬度字符串转换为LatLng列表?
解决方案
核心原因:Polygon的points属性要求接收List<LatLng>类型参数,你直接传入了未解析的字符串,因此触发类型不匹配报错。
第一步:实现字符串转LatLng列表的解析方法
import 'package:google_maps_flutter/google_maps_flutter.dart'; List<LatLng> parseLatLngString(String rawString) { // 匹配字符串中所有的浮点数值 final numberReg = RegExp(r'-?\d+\.?\d*'); final numberList = numberReg.allMatches(rawString) .map((match) => double.parse(match.group(0)!)) .toList(); List<LatLng> latLngList = []; // 每两个数值为一组,分别对应纬度、经度生成LatLng对象 for (int i = 0; i < numberList.length; i += 2) { if (i + 1 < numberList.length) { latLngList.add(LatLng(numberList[i], numberList[i + 1])); } } return latLngList; }
第二步:修改业务代码,使用解析后的列表
Set<Polygon> polygonSet = {}; // 先解析原始字符串得到LatLng列表 List<LatLng> polygonPoints = parseLatLngString(widget.list[widget.index]['map']); polygonSet.add(Polygon( polygonId: const PolygonId('test'), points: polygonPoints, // 传入解析后的LatLng列表 strokeWidth: 2, strokeColor: Colors.blue, fillColor: Colors.blue.withOpacity(0.4), )); return polygonSet;
注意事项
- 该方案不需要引入额外的序列化依赖,适配你给出的字符串格式
- 如果后续服务端返回的经纬度字符串格式调整,只需要修改正则匹配规则即可适配
内容的提问来源于stack exchange,提问作者dinesh balan
相关产品推荐
相关产品推荐

