0

私はiOS用のグーグルマップのカスタムとしてルートを計画しています。

LINESTRINGで着信JSONを解析するにはどうすればよいですか?

私のLINESTRING:

"coordInfo": "LINESTRING (28.646751729297 40.9993029074749, 28.6470087874434 40.9995465119554, 28.6470087874434 40.9995465119554, 28.6474633603416 41.0000088561426)"
    },
4

1 に答える 1

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);
    }
于 2012-08-13T16:43:13.303 に答える