Можно ли переместить аннотацию без удаления и добавления новой аннотации?

Я бы хотел остаться с MapBox, потому что в будущем это поддержка автономных карт.

Заранее спасибо!!

3
kennyevo 29 Дек 2015 в 20:36

3 ответа

Лучший ответ

Начиная с Mapbox iOS SDK v3.2.0, невозможно обновить координаты аннотации, добавленной к карте. Вот соответствующий билет на Github.

5
friedbunny 15 Апр 2016 в 20:16

Вы можете сделать индивидуальную разработку для движущегося маркера. Я сделал это, и все работает как положено.

Если вы хотите переместить маркер вдоль ломаной линии, я бы начал с удержания ссылки на ваш MGLPointAnnotation и обновил его свойство координат по таймеру или по мере того, как пользователь перемещается вместе с ним.

0
miOS 16 Сен 2016 в 08:11

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

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

class ViewControllerWithAMap: UIViewController {
    var movingPointAnnotation: MGLPointAnnotation?
    ...
}

Сделайте эту ссылку необязательной, чтобы вы знали, когда ее инициировать, а затем просто обновите координаты. Последняя часть может показаться нелогичной, но все, что вам действительно нужно сейчас сделать, это снова добавить аннотацию к карте. Например:

    if self.movingPointAnnotation == nil {
        self.movingPointAnnotation = MGLPointAnnotation()
    }
    guard self.movingPointAnnotation != nil else {
        print("What?! Could not initiate moving annotation.")
        return // something weird, give up
    }
    self.movingPointAnnotation!.coordinate = myNewCLLocationCoordinate2D
    self.mapView.addAnnotation(self.movingPointAnnotation!)

Что касается последней части, где вы добавляете аннотацию снова и снова, я пытался добавить аннотацию только один раз, а затем просто обновил ее координаты, но аннотация не перемещалась.

0
Rob 11 Окт 2017 в 11:43