将位置存储为字符串,从字符串中获取位置以显示在地图上。 iOS

Posted

技术标签:

【中文标题】将位置存储为字符串,从字符串中获取位置以显示在地图上。 iOS【英文标题】:store a location as string, get back location from string to show on a map. iOS 【发布时间】:2013-07-03 00:19:46 【问题描述】:

限制是我只能将位置信息存储为字符串。 我希望使用 coreLocation 获取当前位置,然后将其转换为字符串,以便将其存储在数据库中。稍后,我希望从数据库中获取位置信息(字符串格式)并在地图上显示该位置。那么我该如何实现呢?我需要将 coreLocation 的哪些信息存储为字符串?只有纬度和经度就够了吗?那么如何使用字符串来构建 coreLocation,以便在地图上显示它?谢谢!

【问题讨论】:

【参考方案1】:

是的,保存纬度/经度是这里的关键。如果您尝试保存地址字符串,那么稍后将太容易出错而无法重新绘制到地图上。

您可以只创建一个字符串,其中纬度后跟逗号,然后是经度。当您稍后从数据库中取回此字符串时,只需用逗号分割字符串。然后,您可以使用这些值作为纬度和经度来创建 CLLocation 对象或您需要的任何对象(MKAnnotation?)...

希望对您有所帮助。

【讨论】:

【参考方案2】:

如果您最终将 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

【讨论】:

这里是transformValue的更正版本:方法:- (id)transformedValue:(id)value CLLocation *location = (CLLocation *) value; return [NSString stringWithFormat: @"%f ​​%f", location.coordinate.latitude, location.coordinate.longitude];

以上是关于将位置存储为字符串,从字符串中获取位置以显示在地图上。 iOS的主要内容,如果未能解决你的问题,请参考以下文章

如何在android的地图上显示数据库中存储的位置?

单击时获取存储的 LatLng 以在地图上显示位置

iphone app - 如何只获取一次当前位置并将其存储以用于另一个功能?

MapView:UIViewRepresentable 不以获取的列表为中心

四舍五入经纬度以在 Google 地图中显示大致位置

获取android应用的当前位置地址