You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 08:27:02