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

Flutter如何将字符串转换为LatLng列表用于Google Maps多边形

解决Flutter中字符串转LatLng列表的问题

要把数据库返回的格式字符串转换成可用的LatLng列表,按以下步骤操作:

  1. 修正字符串格式
    数据库返回的字符串外层是大括号{},而JSON数组标准格式用方括号[],先替换首尾的大括号:

    var coord = "{[48.885278, 2.349523], [48.885471,2.349528], [48.888300,2.349597]}";
    // 替换首尾大括号为方括号,转为合法JSON数组格式
    String jsonStr = coord.replaceFirst('{', '[').replaceFirst('}', ']');
    
  2. 解析JSON为二维数值列表
    借助dart:convert的jsonDecode方法,把处理后的字符串解析成二维动态列表:

    import 'dart:convert';
    // 解析JSON字符串
    List<List<dynamic>> rawCoords = jsonDecode(jsonStr);
    
  3. 转换为LatLng列表
    遍历解析后的二维列表,将每个子列表的两个数值分别作为纬度、经度,创建LatLng对象并收集为列表:

    import 'package:google_maps_flutter/google_maps_flutter.dart';
    
    List<LatLng> polygonCoords = rawCoords.map((coord) {
      return LatLng(coord[0] as double, coord[1] as double);
    }).toList();
    

完整代码示例(含异常处理)

为避免解析失败导致崩溃,建议添加异常捕获:

import 'dart:convert';
import 'package:google_maps_flutter/google_maps_flutter.dart';

List<LatLng> convertToLatLngList(String coordStr) {
  try {
    // 修正字符串格式
    String jsonStr = coordStr.replaceFirst('{', '[').replaceFirst('}', ']');
    // 解析JSON
    List<List<dynamic>> rawCoords = jsonDecode(jsonStr);
    // 转换为LatLng列表
    return rawCoords.map((coord) {
      return LatLng(coord[0] as double, coord[1] as double);
    }).toList();
  } catch (e) {
    // 解析失败时返回空列表或自定义错误处理
    print('坐标解析失败:$e');
    return [];
  }
}

// 使用示例
void main() {
  var coord = "{[48.885278, 2.349523], [48.885471,2.349528], [48.888300,2.349597]}";
  List<LatLng> polygon1 = convertToLatLngList(coord);
  // polygon1可直接用于Google Maps绘制多边形
}

内容的提问来源于stack exchange,提问作者Pierre jean

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 04:15:03