Iphone 如何在MKMapView中模拟用户驾驶路线?
我需要模拟我的应用程序在用户开车四处观看演示时的样子。我有一个MKMapView,我怎样才能模拟一个开车的用户的样子,这个用户将使用map.userLocation功能,这在演示中显然是不可用的Iphone 如何在MKMapView中模拟用户驾驶路线?,iphone,objective-c,mapkit,mkmapview,Iphone,Objective C,Mapkit,Mkmapview,我需要模拟我的应用程序在用户开车四处观看演示时的样子。我有一个MKMapView,我怎样才能模拟一个开车的用户的样子,这个用户将使用map.userLocation功能,这在演示中显然是不可用的 谢谢 无法在iPhone模拟器中进行模拟。您需要将其加载到设备上并四处移动。我不是iPhone开发专家,但地图视图如何接收坐标?如果它是通过一个调用CoreLocation API的函数实现的,那么您是否可以编写一个函数,在某个时间间隔随机生成经度和纬度值,并让地图视图从中提取坐标?只是想一想。你还可以
谢谢 无法在iPhone模拟器中进行模拟。您需要将其加载到设备上并四处移动。我不是iPhone开发专家,但地图视图如何接收坐标?如果它是通过一个调用CoreLocation API的函数实现的,那么您是否可以编写一个函数,在某个时间间隔随机生成经度和纬度值,并让地图视图从中提取坐标?只是想一想。你还可以在iPhone模拟器中查看哪些功能声称能够模拟iPhone上仅有的几个功能,包括CoreLocation。我自己没有试过,所以你的里程数可能会有所不同。我做了一些事情,基本上就是这么做的
- (void)moveIcon:(MKAnnotationView*)locationView toLocation:(CLLocation*)newLoc
{
LocationAnnotation* annotation = [[[LocationAnnotation alloc] initWithCoordinate:newLoc.coordinate] autorelease];
[locationView setAnnotation:annotation];
[map setCenterCoordinate:newLoc.coordinate animated:YES];
}
然后我在我所有顶点之间的循环中调用这个家伙,稍微延迟一下。非常有效。答案是否定的。那么,在代码和MKMapKit之间添加一个抽象层怎么样?您可以针对您的目标进行xUnit测试。为了模拟驾驶,您需要建立两个基本功能:
对于第2部分,请看。我发现更好的方法是将
MKUserLocation
子类化:
class SimulatedUserLocation: MKUserLocation {
private var simulatedCoordinate = CLLocationCoordinate2D(latitude: 39, longitude: -76)
override dynamic var coordinate: CLLocationCoordinate2D {
get {
return simulatedCoordinate
}
set {
simulatedCoordinate = newValue
}
}
}
然后将其添加为注释mapView.addAnnotation(SimulatedUserLocation())
。(您可能还想先隐藏真实位置mapView.showsUserLocation=false
)
iOS将呈现与真实用户位置完全相同的注释
dynamic
用于属性,因此更改坐标会触发KVO并在地图上移动它。我的意思不是使用CoreLocation来精确模拟它,而是通过某种方式来设置移动的管脚的动画。MapKit地图对于您放置的管脚是这样工作的,但是当您将自己的位置放入(蓝色圆圈)中时,MapKit在内部使用CoreLocation服务。不幸的是,这不起作用。它通过一个自定义注释接收它们,该注释的所有内部都是隐藏的,因此无法进行模拟。