Как смоделировать пользователя, управляющего маршрутом в Mkmapview?

StackOverflow https://stackoverflow.com/questions/1694705

Вопрос

Мне нужно моделировать, как будет выглядеть мое приложение, когда пользователь будет проезжать на демонстрацию. У меня есть Mkmapview, как я могу имитировать внешний вид пользователя, который будет использовать функцию Map.UserLocation, что, очевидно, не будет доступно в демонстрации.

Спасибо!

Это было полезно?

Решение 2

Ну, у меня что -то делало, я только что сделал это по сути

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

Затем я называю этого парня в цикле между всеми моими вершинами с небольшой задержкой. Работает довольно Qell.

Другие советы

Нет возможности имитировать в симуляторе iPhone. Вам нужно будет загрузить его на свое устройство и перемещаться.

Я не эксперт с iPhone dev, но как представление карты получают координаты? Если именно через функцию вызывает API CoreLocation, не могли бы вы просто написать функцию, которая случайным образом генерирует значения долготы и широты в определенном интервале времени и просмотр вашей карты вытягивает координаты оттуда? Просто мысль.

Вы также можете проверить Исимулят который утверждает, что может моделировать несколько функций, доступных только на iPhone в симуляторе iPhone, включают Corelocation. Я сам не пробовал это, поэтому ваш пробег может варьироваться.

Чтобы имитировать вождение, вам необходимо установить 2 основных функциональных возможностей:

  1. Чтение Cllocations из архива (который вы бы регистрировали во время теста привода с помощью устройства). В идеале вы сделаете это на основе метки времени на местоположениях, то есть воспроизводив те же самые обновления местоположения, которые были получены во время теста на привод.

  2. Обновление позиции MkannotationView на карте на основе локаций, читаемых из журнала.

Для части 1 взгляните на CllocationDispatch, удобный класс, который обеспечивает архивирование/неотъемлемое количество слоев и отправляет их одному или нескольким слушателям (используя протокол CllocationManagerDelegate).

На часть 2 взгляните на Moving-MkannotationView.

Я нашел лучшим способом - это подкласс 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 и перемещает его на карту.

Ответ - нет. Тогда как насчет добавления слоя абстракции между вашим кодом и Mkmapkit? Вы можете сделать тесты на XUNIT для своей цели.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top