0

我需要模拟当用户开车进行演示时我的应用程序的外观。我有一个 MKMapView,我如何模拟用户驾驶的外观,它将使用 map.userLocation 功能,这显然在演示中不可用。

谢谢!

4

7 回答 7

1

无法在 iPhone 模拟器中进行模拟。您需要将其加载到您的设备上并四处走动。

于 2009-11-07T23:01:00.563 回答
1

好吧,我有一些事情要做,我基本上就是这样做的

- (void)moveIcon:(MKAnnotationView*)locationView toLocation:(CLLocation*)newLoc
{
    LocationAnnotation* annotation = [[[LocationAnnotation alloc] initWithCoordinate:newLoc.coordinate] autorelease];
    [locationView setAnnotation:annotation];
    [map setCenterCoordinate:newLoc.coordinate animated:YES];
}

然后我在我的所有顶点之间循环调用这个人,并稍有延迟。工作得很好。

于 2009-11-08T00:48:10.503 回答
0

我不是 iPhone 开发专家,但地图视图如何接收坐标?如果是通过调用 CoreLocation API 的函数,您是否可以只编写一个函数,以特定时间间隔随机生成经度和纬度值,并让您的地图视图从那里提取坐标?只是一个想法。

于 2009-11-07T23:09:34.317 回答
0

您还可以查看iSimulate,它声称能够在 iPhone 模拟器中模拟一些仅在 iPhone 上可用的功能,包括 CoreLocation。我自己没有尝试过,所以你的里程可能会有所不同。

于 2009-11-07T23:57:55.677 回答
0

为了模拟驾驶,您需要建立 2 个基本功能:

  1. 从存档中读取 CLLocations(您将在使用设备进行路测期间记录该存档)。理想情况下,您将根据位置上的时间戳执行此操作,即再现在路测期间收到的完全相同的位置更新。

  2. 根据从日志中读取的位置更新您的 MKAnnotationView 在地图上的位置。

对于第 1 部分,看一下CLLocationDispatch,这是一个方便的类,它提供 CLLocation 的归档/取消归档并将它们分派给一个或多个侦听器(使用 CLLocationManagerDelegate 协议)。

对于第 2 部分,请查看Moving-MKAnnotationView

于 2011-05-18T14:27:47.223 回答
0

我发现一个更好的方法是子类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 并在地图上移动它。

于 2016-12-19T18:36:05.670 回答
-1

答案是不。那么,如何在您的代码和 MKMapKit 之间添加一个抽象层呢?您可以针对您的目标进行 xUnit 测试。

于 2009-11-09T02:05:37.007 回答