限制是我只能将位置信息存储为字符串。
我希望使用 coreLocation 获取当前位置,然后将其转换为字符串,以便将其存储在数据库中。稍后,我希望从数据库中获取位置信息(字符串格式)并在地图上显示该位置。那么我该如何实现呢?我需要将 coreLocation 的哪些信息存储为字符串?只有纬度和经度就够了吗?那么如何使用字符串来构建 coreLocation,以便在地图上显示它?谢谢!
问问题
972 次
2 回答
1
是的,保存纬度/经度是这里的关键。如果您尝试保存地址字符串,那么稍后将太容易出错而无法重新绘制到地图上。
您可以只创建一个带有纬度的字符串,后跟逗号,然后是经度。当您稍后从数据库中取回此字符串时,只需用逗号分割字符串。然后,您可以将这些值用作纬度和经度来创建 CLLocation 对象或您需要的任何对象(MKAnnotation?)...
希望有帮助。
于 2013-07-03T02:36:25.990 回答
1
如果您最终将CoreLocation
数据用于地图应用程序,那么只需纬度和经度就足够了。
使用 NSValueTransformer,例如:
@interface CLLocationToStringTransformer : NSValueTransformer
@end
@implementation CLLocationToStringTransformer
+ (BOOL) allowsReverseTransformation
{ return YES; }
+ (Class) transformedValueClass
{ return [NSString class]; }
- (id) transformedValue: (id) value
{ CLLocation *location = (CLLocation *) value;
return [NSString stringWithFormat: "%@ %@",
theLocation.coordinate.latitude,
theLocation.coordinate.longitude]; }
- (id)reverseTransformedValue:(id)value
{ NSString *string = (NSString *) value;
NSArray *parts = [string componentsSeparatedByString: @" "];
return [[CLLocation alloc] initWithLatitude: [parts[0] doubleValue]
longitude: [parts[1] doubleValue]]; }
@end
于 2013-07-03T01:38:27.570 回答