Как пользователь может изменить местоположение на mapkit iphone dev?

#iphone

#iPhone

Вопрос:

Я разрабатываю приложение, в котором мне нужно использовать map kit (в первый раз), и я тоже новичок в iphone. Мое требование заключается в том, что пользователь может редактировать местоположение и устанавливать желаемое местоположение с помощью PIN-кода. Я следую многим инструкциям, но я не мог понять, что пользователи могут менять местоположение для перемещения pin-кода на карте. Любая помощь, пожалуйста, спасибо.

Комментарии:

1. Вы имели в виду пин-коды, когда пользователь нажимает на карту?

2. да, например, последнее местоположение пользователя установлено на северной стороне (в каком-то месте) Нью-Йорка, и если пользователь нажмет на east side (в каком-то месте) Нью-Йорка, тогда он изменит местоположение на east side Нью-Йорка, используя pin-код, возможно ли это?

Ответ №1:

Вы могли бы использовать UIGestureRecognizer для обнаружения прикосновений к виду карты.

В том месте, где вы настраиваете вид карты (например, в viewDidLoad), прикрепите распознаватель жестов к виду карты:

 UITapGestureRecognizer *tgr = [[UITapGestureRecognizer alloc] 
initWithTarget:self action:@selector(handleGesture:)];
tgr.numberOfTapsRequired = 2;
tgr.numberOfTouchesRequired = 1;
[mapView addGestureRecognizer:tgr];
[tgr release];
  

или использовать длительное нажатие:

 UILongPressGestureRecognizer *lpgr = [[UILongPressGestureRecognizer alloc] 
initWithTarget:self action:@selector(handleGesture:)];
lpgr.minimumPressDuration = 2.0;  //user must press for 2 seconds
[mapView addGestureRecognizer:lpgr];
[lpgr release];
  

В handleGesture: метод:

 - (void)handleGesture:(UIGestureRecognizer *)gestureRecognizer
{
    if (gestureRecognizer.state != UIGestureRecognizerStateEnded)
    return;

    CGPoint touchPoint = [gestureRecognizer locationInView:mapView];
    CLLocationCoordinate2D touchMapCoordinate = 
    [mapView convertPoint:touchPoint toCoordinateFromView:mapView];

    MKPointAnnotation *pa = [[MKPointAnnotation alloc] init];
    pa.coordinate = touchMapCoordinate;
    pa.title = @"Hello";
    [mapView addAnnotation:pa];
    [pa release];
}