Как определить, переместил ли пользователь карту MKMapView на определенный процент?

Я хочу определить, переместил ли пользователь карту на определенный процент (скажем, на 20%). Как я могу достичь этого? Движение может быть в любом направлении.

1 ответ

Вот идея:

Шаг 1: объявить свойство координат

@property CLLocationCoordinate2D lastCoordinate;

Шаг 2: Запустите на карте:

_lastCoordinate = [map convertPoint:self.view.center toCoordinateFromView:yourMap];

Шаг 3: Монитор

- (void) mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated {
    CGPoint currentPoint = [mapView convertCoordinate:_lastCoordinate toPointToView:self.view];

    int xDistance = currentPoint.x - self.view.center.x;
    if (xDistance < 0) xDistance = xDistance * -1;

    if (xDistance > (self.view.bounds.size.width / 5)) {
        // moved 20% on x axis
        _lastCoordinate = [mapView convertPoint:self.view.center toCoordinateFromView:self.view];
    }
    else {
        int yDistance = currentPoint.y - self.view.center.y;
        if (yDistance < 0) yDistance = yDistance * -1;

        if (yDistance > (self.view.bounds.size.height / 5)) {
            // moved 20% on y axis
            _lastCoordinate = [mapView convertPoint:self.view.center 
                               toCoordinateFromView:self.view];
        }
    }
}

Я уверен, что реализация могла бы быть чище, но только для начала, я думаю, это должно указать вам правильное направление. Дайте мне знать, как это работает!

Другие вопросы по тегам