- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
在我的应用程序中,我试图将一组 MKPolylines
存储到 NSUserDefaults
中。
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:overlays];
[[NSUserDefaults standardUserDefaults] setObject:data forKey:@"theKey"];
给予:
[MKPolyline encodeWithCoder:]: unrecognized selector sent to instance 0x169c20`
Terminating app due to uncaught exception
'NSInvalidArgumentException', reason: '-
[MKPolyline encodeWithCoder:]: unrecognized
selector sent to instance 0x1c57e0'
编辑:我取得了一些进展。 MKPolylineView
符合 NSCoding
协议(protocol),因此我将我的 MKPolyline
数组转换为 MKPolylineView
数组.问题是当我想稍后将它们添加回 map 时,我无法将它们转换回 MKPolyline
。知道怎么做吗?
在此代码处崩溃:
NSData* data = [[NSUserDefaults standardUserDefaults] objectForKey:@"theKey"];
NSArray* overlays = [NSKeyedUnarchiver unarchiveObjectWithData:data];
for(MKPolylineView* a in overlays)
[mapView addOverlay:a.overlay];
2011-10-17 21:15:56.416 Trail Tracker[4269:707] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil'
*** First throw call stack:
(0x34b2f8bf 0x36c3a1e5 0x34a8420f 0x35697595 0x6257 0x62db 0x365f77ff 0x36601d53 0x36601cc1 0x366a1339 0x366a014f 0x366fad97 0x649b 0x36671565 0x366e9ce7 0x31fcc943 0x34b03a63 0x34b036c9 0x34b0229f 0x34a854dd 0x34a853a5 0x351f9fed 0x365ec743 0x2c75 0x2c34)
terminate called throwing an exception(gdb)
最佳答案
我不太确定这一点,但 MKPolylines 是由 CLLocationCoordinate2D 数组组成的,它包含纬度和经度的浮点值。
因此,如果您可以将此 CLLocationCoordinate2D 数组转换为字典数组,我认为您可以将这些行保存在用户默认值中。
你可以这样做
MKMapPoint *points = overlays.points;
NSMutableArray *temp = [NSMutableArray array];
for(int i = 0; i < points.length; i++)
{
// Not sure for this part
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithFloat:points[i].x], @"x", [NSNumber numberWithFloat:points[i].y], @"y", nil];
[temp addObject:dict];
}
然后你可以使用这个数组像这样在nsuserdefaults中存储覆盖点
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:temp];
[[NSUserDefaults standardUserDefaults] setObject:data forKey:@"theKey"];
关于ios - MKPolyline -> NSKeyedArchiver -> NSData SIGABRT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7698103/
我正在编写一个 iOS 5 应用程序,它实时跟踪用户的位置,在 MKMapView 上绘制他们的路线。每当获取 GPS 读数时,我都希望在当前位置和旧位置之间绘制一条多段线,最终形成用户旅行过的轨迹(
我正在尝试为相应的纬度/经度点数组绘制多条 MKPolylines。但是,当我将 addOverlay 添加到我的 mapView 时,点被绘制但未连接。 -(void)addAllRoutes:(N
我正在尝试跟踪用户的路线并绘制路线的线条,但是 addOverlay 只给我正确的点,但每个点之间没有连接。 -(void)viewWillAppear:(BOOL)animated{ sel
我目前有 MKAnnoations,上面有一个圆形图像,显示在 MKMapView 上。当我放下一个 MKPolyline 时,这些线在圆圈中间相遇,然后离开它。是否可以剪裁 MKPolyline 的
路线明明正在制作,但折线没有画出来。我能够找到总距离,并已验证我们使用的坐标不是 (0,0)。委托(delegate)有问题吗,因为 addOverlay 和 addAnnotation(在下面显示的
你好,我写了这段代码来在一些点之间画一条折线: var arrayToDraw: Array = [] var forpolyline: Array = [] var forpolyline2: CL
我有一条短线 (MKPolyline) 和一个自定义注释类 (MKPointAnnotaion)。现在我的点注释位于多段线的中点。但是,我希望每当触摸多段线上的任何点时都显示标注,类似于路由在 map
我正在尝试使用以下代码绘制 MKpolyline。 var points: [CLLocationCoordinate2D] = [] let locationDetails = myArray as
我在 map 上有两条折线: var polylineRoute : MKGeodesicPolyline! var polylineFlight : MKGeodesicPolyline! 我为它
我有一个应用程序,我在 map 上将路线显示为 MKPolyline。我进行了搜索,但找不到有关如何像 Apple 在 ios6 map 上那样显示自定义 MKPolyline 标注的示例代码: 有人
我需要在 MKPolyline 上找到等距位置来添加注释,如下所示。 下面给出了我获取 MKPolyline 上位置的函数,我有折线的开始和结束坐标值。但位置稍微偏离折线,如下图所示 我查找位置的函数
如何向 MKPolyline 的 boundingMapRect 添加插图以将其与 MKMapSnapshotter 一起使用? let polyLine = MKPolyline(coord
我想显示从我的位置到目的地的路线。我拿了这段代码 http://code.google.com/p/octomapkit并且我添加了一些日志消息。Go 正确获取了路线坐标(大约 103)。他们在路上并
我在 MKMapView 上有一个带有两个点(起点和终点)的 MKPolyline。有什么方法可以得到一些中间点(或坐标)以及线,或者将线分成许多段? 我想要这样的东西:http://i.imgur.
我有一个应用程序,其功能是在后台运行,收集位置数据('runkeeper' 风格的应用程序)。它可能会运行数小时,并收集数千分。 这些“运行”列在表格 View 中,选择后它将在 map 上重新绘制运
我正在尝试让我的 MKPolyline 显示出来,我想我几乎一切都正确,但我一定遗漏了一些东西。没有错误代码,否则 map 显示正常,我可以放下注释图钉。 .h @interface SatFinde
我正在努力学习MapKit并添加一些 MKPolyLine作为覆盖。几个问题: MKPolyLine 之间有什么区别?和 MKPolyLineView .什么时候用哪个? 对于 MKPolyLine
我正在尝试创建一个应用程序,其功能之一是在用户移动时画线。 这是类 class traceuserViewController: UIViewController,CLLocationManagerD
如何检查折线是否已添加到 map ? 我已经尝试了下面的代码,但它似乎不起作用 for (MKPolyline *feature1 in self.mapView.overlays) {
我想获取 MKPolyline 路径的米数,这样我就可以告诉用户完成路径还剩多少米。 我一直在寻找可以做这件事的东西,但我找不到任何东西。 谢谢。 最佳答案 听起来很乏味,除非您想自己进行数学运算,否
我是一名优秀的程序员,十分优秀!