Sko*_*ota 5 mkmapview cllocationmanager ios
我正在编写一个iOS 5应用程序,可以实时跟踪用户的位置,并在其中绘制他们的课程MKMapView.每当进行GPS读取时,我希望在当前位置和旧位置之间绘制折线,最终形成用户已经行进的轨道(或面包屑).
我很乐意使用MKPolyline和MKPolylineView绘制轨道,假设我CLLocationCoordinate2D事先拥有所有坐标,使用类似下面的代码:
MKPolyline *route = [MKPolyline polylineWithCoordinates:coordinates count:[self.coordinateArray count]];
[mapView addOverlay:route];
Run Code Online (Sandbox Code Playgroud)
但是,由于我只是CLLocationCoordinate2D实时获取坐标(因为locationManager:didUpdateToLocation:fromLocation:调用了委托方法),我不确定绘制新折线的最佳方法.
我可以扩展现有的线(即添加到基于C的coordinates阵列 - 没有太多的C经验我不确定如何做到这一点)或者我是否需要在接下来的两个坐标之间创建一个新的折线(尽管我听说过地图上过多的单个折线会影响性能和内存使用情况......)?
提前致谢.
首先,看看如何更新MKPolyline/MKPolylineView?,尤其是Breadcrumb示例代码的链接.这可能是您需要的一个很好的起点.
但是,你会发现它的一个重要部分CrumbPath就是调用它realloc.所以是的,如果想要有效地存储点数组,你需要知道如何管理C风格的数组.是的,这并不容易.是的,C风格的数组操作是内存泄漏的邀请.
Breadcrumb示例用于realloc调整其数组的大小.通过分配数组与NSMutableData类型一起使用的内存,您可以更安全一些.建议作为答案在Objective-C/iPhone应用程序中使用"经典"malloc()/ free()是否可以?.阅读其他解决方案,看看常规的C malloc()和free()函数做同样的工作.请注意,NSMutableData有一个非常方便的increaseLengthBy:方法.
当你理解为什么每个C学生都试图sizeof()错误使用- 以及如何正确使用它 - 你将理解C内存管理.
| 归档时间: |
|
| 查看次数: |
2179 次 |
| 最近记录: |