首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将长弦弦解析为lat & long s颤振

将长弦弦解析为lat & long s颤振
EN

Stack Overflow用户
提问于 2022-05-06 13:45:48
回答 2查看 47关注 0票数 0

我从Json中的API调用接收Lats & Longs的String

代码语言:javascript
复制
"lineStrings": [
        "[[[-0.301457,51.515017],[-0.288265,51.51014],[-0.280462,51.503057],[-0.267972,51.494627],[-0.254555,51.495148],[-0.245704,51.494917],[-0.235881,51.494122],[-0.22362,51.4923],[-0.213427,51.490311],[-0.206636,51.490459],[-0.193378,51.492063],[-0.182658,51.494316],[-0.174138,51.494094],[-0.156377,51.49227],[-0.143102,51.496359],[-0.133608,51.499544],[-0.124861,51.50132],[-0.122666,51.507058],[-0.11426,51.511006],[-0.103659,51.511581],[-0.094009,51.512117],[-0.090432,51.51151],[-0.085969,51.5107],[-0.076546,51.509971],[-0.072384,51.515037],[-0.059971,51.519518],[-0.046596,51.521858],[-0.03364,51.525122],[-0.025128,51.52694],[-0.011538,51.524839],[0.005055,51.528136],[0.017451,51.531341],[0.035263,51.53534],[0.051186,51.538948],[0.081053,51.539321],[0.10153,51.538372],[0.127016,51.540331],[0.147527,51.541639],[0.166017,51.544096],[0.19864,51.549775],[0.219116,51.554093],[0.235809,51.55856],[0.250882,51.559063]]]"]

与我习惯的调用不同,它们不是我可以迭代的单个lat和long值,它作为一个长字符串块返回。

我可能不正确,但我不相信我能够解析它,因为没有lat & long类可以迭代,只有lineStrings,这是一个很长的块。我要解析的Quicktype.io类在迭代时带我到.linestrings

我想把它们分割成坐标对,这样我就可以从每个坐标中取lat & long。

我试过‘拆分’,但是由于双打之间的逗号,我无法让它工作。我也尝试删除特殊字符,但无法保持格式化。

欢迎任何建议。

最终目标是能够执行以下操作

代码语言:javascript
复制
for (var x in coordinates){
GeoCoordinates y = GeoCoordinates(x.latitude, x.longitude);
}

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-05-06 14:15:02

您必须手动拆分:

代码语言:javascript
复制
void main() {
  '[[[-0.301457,51.515017],[-0.288265,51.51014],[-0.280462,51.503057]]]'
      .split('],[')
      .forEach((p) => print(p.replaceAll('[', '').replaceAll(']', '')));
}

指纹:

代码语言:javascript
复制
-0.301457,51.515017
-0.288265,51.51014
-0.280462,51.503057

您可以在,上进一步拆分,并将其解析为一对双倍。

或者您可以添加一个LatLong类来保存这一对:

代码语言:javascript
复制
void main() {
  final latLongs =
      '[[[-0.301457,51.515017],[-0.288265,51.51014],[-0.280462,51.503057]]]'
          .split('],[')
          .map((p) => LatLong.fromString(
                p.replaceAll('[', '').replaceAll(']', ''),
              ));

  print(latLongs);
}

class LatLong {
  LatLong(this.lat, this.long);

  factory LatLong.fromString(String pair) {
    final parts = pair.split(',');
    return LatLong(double.parse(parts[0]), double.parse(parts[1]));
  }

  double lat;
  double long;
}
票数 1
EN

Stack Overflow用户

发布于 2022-05-06 14:26:49

代码语言:javascript
复制
var json = {"lineStrings": [
                    "[[[-0.301457,51.515017],[-0.288265,51.51014],[-0.280462,51.503057],[-0.267972,51.494627],[-0.254555,51.495148],[-0.245704,51.494917],[-0.235881,51.494122],[-0.22362,51.4923],[-0.213427,51.490311],[-0.206636,51.490459],[-0.193378,51.492063],[-0.182658,51.494316],[-0.174138,51.494094],[-0.156377,51.49227],[-0.143102,51.496359],[-0.133608,51.499544],[-0.124861,51.50132],[-0.122666,51.507058],[-0.11426,51.511006],[-0.103659,51.511581],[-0.094009,51.512117],[-0.090432,51.51151],[-0.085969,51.5107],[-0.076546,51.509971],[-0.072384,51.515037],[-0.059971,51.519518],[-0.046596,51.521858],[-0.03364,51.525122],[-0.025128,51.52694],[-0.011538,51.524839],[0.005055,51.528136],[0.017451,51.531341],[0.035263,51.53534],[0.051186,51.538948],[0.081053,51.539321],[0.10153,51.538372],[0.127016,51.540331],[0.147527,51.541639],[0.166017,51.544096],[0.19864,51.549775],[0.219116,51.554093],[0.235809,51.55856],[0.250882,51.559063]]]"
                  ]
                };


                List<dynamic> jsonList = json["lineStrings"]!
                    .first
                    .replaceAll("[", "")
                    .replaceAll("]", "")
                    .split(",");


                List<Coordinates> result = [];
                for (var i = 0; i < jsonList.length / 2; i++) {
                  result.add(Coordinates(
                      lat: double.parse(jsonList[i]),
                      long: double.parse(jsonList[i + 1])));
                }


                result.forEach((element) {
                  print("Lat" + element.lat.toString());
                  print("Long" + element.long.toString());
                  print("*************************");
                });

class Coordinates {
      double lat;
      double long;

  Coordinates({
    required this.lat,
    required this.long,
 });
 }

颤振: Lat-0.301457

颤振: Long51.515017

颤振:*

颤振: Lat51.515017

颤振:长-0.288265

颤振:*

颤振: Lat-0.288265

颤振: Long51.51014

颤振:*

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72142514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档