Как удалить аннотации на виде карты и сохранить pin-код

#swift #mapkit

#swift #mapkit

Вопрос:

Я хочу создать приложение, в котором пользователь может поместить pin-код на карту, нажав на карту. После удаления pin-кода я хочу сохранить pin-код в базе данных. Мне все равно, в каком из них может Realm быть или CoreData .

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

1. Я думаю, что это идеальное руководство для вас raywenderlich.com/112544/realm-tutorial-getting-started . Там вы создаете приложение на основе карт с Realm в качестве хранилища данных

2. учебник кажется идеальным, спасибо. Я попробую это сейчас

Ответ №1:

RTFM

Не могу вам помочь без какого-либо кода или каких-либо проблем.

некоторые ссылки, которые могут быть полезными : https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreData/index.html
https://developer.apple.com/reference/corelocation
https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/LocationAwarenessPG/Introduction/Introduction.html#//apple_ref/doc/uid/TP40009497

вернитесь после того, как попробуете что-нибудь 😉

Редактировать:

Вы определили распознаватель жестов внутри своего viewDidLoad метода, вместо этого поместите его непосредственно в свой контроллер, что должно устранить некоторые ошибки :

 import UIKit
import MapKit

class ViewController: UIViewController {

    @IBOutlet var mapView: MKMapView!

    override func viewDidLoad() {
        super.viewDidLoad()

        // Create a gesture recognizer for long presses (for example in viewDidLoad)
        UILongPressGestureRecognizer *lpgr = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)];
        lpgr.minimumPressDuration = 0.5; //user needs to press for half a second.
        [self.mapView addGestureRecognizer:lpgr];
    }

    - (void)handleLongPress:(UIGestureRecognizer *)gestureRecognizer {
        if (gestureRecognizer.state != UIGestureRecognizerStateBegan) {
            return;
        }
        CGPoint touchPoint = [gestureRecognizer locationInView:self.mapView];
        CLLocationCoordinate2D touchMapCoordinate = [self.mapView convertPoint:touchPoint toCoordinateFromView:self.mapView];
        MKPointAnnotation *point = [[MKPointAnnotation alloc] init];
        point.coordinate = touchMapCoordinate;
        for (id annotation in self.mapView.annotations) {
            [self.mapView removeAnnotation:annotation];
        }
        [self.mapView addAnnotation:point];
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}
  

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

1. Теперь я получаю ожидаемое выражение ошибки в списке выражений в строке UILongPressGestureRecognisezer *lpgr… и ожидаемое объявление ошибки в строке — (void)handleLongPress: … я действительно не знаю, что не так с моим кодом

2. Отсутствовал знак равенства