ios LINESTRING解析
Posted
技术标签:
【中文标题】ios LINESTRING解析【英文标题】:ios LINESTRING parsing 【发布时间】:2012-08-13 15:22:22 【问题描述】:我一直在为 ios 的谷歌地图定制路线。
如何解析 LINESTRING 中传入的 JSON??
我的 LINESTRING:
"coordInfo": "LINESTRING (28.646751729297 40.9993029074749, 28.6470087874434 40.9995465119554, 28.6470087874434 40.9995465119554, 28.6474633603416 41.0000088561426)"
,
【问题讨论】:
【参考方案1】:从您发布的内容看来,objectForKey@"coordInfo" 为您提供了一个带有括号中数字的字符串。您可以使用 NSString 方法 componentsSeparatedByCharactersInSet 对其进行解析:传递包含左右括号、逗号和空格的集合以生成单个数字字符串的数组(以及单词“LINESTRING”作为数组中的第一个字符串) .该数组还将包含一些空字符串,其中 2 个分隔字符在一起(如逗号和空格),因此在将对象从数组中取出时必须进行测试。
你也可以像这样使用 NSScanner:
NSString *toParse = @"LINESTRING (28.646751729297 40.9993029074749, 28.6470087874434 40.9995465119554, 28.6470087874434 40.9995465119554, 28.6474633603416 41.0000088561426)";
NSScanner *scanner = [NSScanner scannerWithString:toParse];
double num;
while (! [scanner isAtEnd])
[scanner scanUpToCharactersFromSet:[NSCharacterSet decimalDigitCharacterSet] intoString:nil];
[scanner scanDouble:&num];
// put numbers into an array here or use them somehow
NSLog(@"%f",num);
【讨论】:
尝试了您的代码,但它记录了最后一个数字两次(可能是末尾的“)”),将其添加到 IF 中为我修复了它:while (![scanner isAtEnd] &&scanner. scanLocation以上是关于ios LINESTRING解析的主要内容,如果未能解决你的问题,请参考以下文章
确定 Shapely 点是不是在 LineString/MultiLineString 内