json Flutter如何从String创建List LatLng?

sh7euo9m  于 2023-06-25  发布在  Flutter
关注(0)|答案(1)|浏览(122)

我需要你的帮助:)
在Flutter中,如果我创建了一个LatLng列表(polygon1),我可以用它在GoogleMap中显示polygon1。很好用

List<LatLng> polygon1 = const [
LatLng(48.885278,2.349523),
LatLng(48.885471,2.349528), 
LatLng(48.888300,2.349597)];

我需要创建相同的列表LatLng使用来自数据库的数据
我的数据就像这个变量'coord':

var coord = "{[48.885278, 2.349523], [48.885471,2.349528], [48.888300,2.349597]}";

如何将此变量转换为ListLatLng,以用于在GoogleMaps上显示此LatLng中的多边形
如果有人有时间帮助我,那就太好了:)

oyt4ldly

oyt4ldly1#

您使用的字符串不是有效的JSON格式。
它需要像这样:

var coord = "[[48.885278, 2.349523], [48.885471,2.349528], [48.888300,2.349597]]";

您可以使用此方法:

List<LatLng> parseLatLng(String jsonString) {
    var json = jsonDecode(jsonString);
    return (json as List).map((item) => LatLng(item[0], item[1])).toList();
  }

如果你不得不将它视为无效的JSON格式,你可以编辑上面的方法如下:

List<LatLng> parseLatLng(String jsonString) {
var json = jsonDecode(jsonString);
jsonString = jsonString.replaceAll(RegExp(r'[{}]'), ''); // this way you remove curly braces 
jsonString = '[$jsonString]'; // and then you need to wrap it to be a valid JSON format
return (json as List).map((item) => LatLng(item[0], item[1])).toList();

}

示例:

void main() async {

var coord = "[[48.885278, 2.349523], [48.885471,2.349528], [48.888300,2.349597]]";
List<LatLng> polygon=parseLatLng(coord);


}

List<LatLng> parseLatLng(String jsonString) {
    var json = jsonDecode(jsonString);
    return (json as List).map((item) => LatLng(item[0], item[1])).toList();
}

var coord = "[[48.885278, 2.349523], [48.885471,2.349528], [48.888300,2.349597]]";
var json = jsonDecode(jsonString);
List<LatLng> polygon=(json as List).map((item) => LatLng(item[0], item[1])).toList()

相关问题