0

次のコードを検討してください。

NSString * coordinateString = [NSString stringWithFormat:@"(%@,%@}", [inPoint objectAtIndex:0],[inPoint objectAtIndex:1]];
CLLocationCoordinate2D  * myPoint= (__bridge CLLocationCoordinate2D *)(coordinateString);

私の質問は次のとおりです。この例では、

[inPoint objectAtIndex:0] and [inPoint objectAtIndex:0]

はそれぞれ 16.4006 と 38.254 です

myPoint の値をログに記録すると、"myPoint=(16.400583,38.254028}" が得られます。予想どおりですが、デバッグ パネルでは、myPoint は緯度 7304.....-304 で表されます。無限のゼロの経度。

これは内部表現ですか、それとも double から NSString から CLLocationCoordinate2D への変換で失われたものですか?

4

1 に答える 1

0

これが誰かに関連していることを願っています:私は最終的に次のコードでこれを修正しました:

float lat = [[inPoint objectAtIndex:0]floatValue];
float lng = [[inPoint objectAtIndex:1]floatValue];

CLLocationCoordinate2D myPoint = CLLocationCoordinate2DMake(lat, lng);

入力は double であり、明らかに float に変換する必要がありました。

于 2015-09-13T14:12:45.653 に答える