2014-12-12 2 views
0

Я пытаюсь переместить аннотацию (обычай) на карту от одной координаты к другой, но не смог найти лучшего способа сделать это. Я искал в Интернете, но не нашел ничего полезного.swift: перемещение аннотации с одной координаты на другую

Любой, кто был успешным в реализации такой функциональности (в быстрой)?

EDIT

var annMove: CustomAnnotation = CustomAnnotation(); 
    annMove.title = "Moving annotation" 
    annMove.subtitle = "" 
    annMove.imageName = "blue_pin.png" 
    self.mapView.addAnnotation(annMove); 
    for i in 0..<route.count 
    { 
     annMove.coordinate = route[i]; 
    } 

CustomAnnotation

class CustomAnnotation: MKPointAnnotation { 
var imageName: String! 

}

Когда я запускал код, все, что я могу видеть, является аннотацией на координате route[0]. Если аннотация перемещалась, то, по крайней мере, она должна находиться в координате route[route.count-1], но не route[0]

+2

Вы пробовали настройки 'coordinate' свойство? Что случилось? – Mundi

+0

@Mundi Да, но это не движение. Я обновил свой пост, проверьте его. –

+0

В большинстве случаев, когда вы хотите что-то перемещать на экране, движение инициируется каким-либо событием, то есть таймером. Если вы просто установите координату в цикле for, она установит координату ко всему местоположению до того, как код завершит один цикл цикла. Экран не будет обновляться между изменениями координат. – barksten

ответ

2

Надеюсь, это поможет. Это сработало для меня.

func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) { 

    var userLocation: CLLocation = locations[0] as! CLLocation 

    var latitude = userLocation.coordinate.latitude 
    var longitude = userLocation.coordinate.longitude 

    var latDelta:CLLocationDegrees = 0.05 
    var lonDelta: CLLocationDegrees = 0.05 

    var span:MKCoordinateSpan = MKCoordinateSpanMake(latDelta, lonDelta) 
    var location:CLLocationCoordinate2D = CLLocationCoordinate2DMake(latitude, longitude) 
    var region:MKCoordinateRegion = MKCoordinateRegionMake(location, span) 

    self.map.setRegion (region, animated: false) 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 

    locationManager.delegate = self 
    locationManager.desiredAccuracy = kCLLocationAccuracyBest 
    locationManager.requestWhenInUseAuthorization() 
    locationManager.startUpdatingLocation() 
    map.showsUserLocation = true 
} 
-1
[UIView animateWithDuration:5.0 
            delay:0.0 
           options:UIViewAnimationOptionCurveLinear 
          animations:^{ 
           [CarAnnotationView.annotation setCoordinate:newCoord]; 
          } completion:nil]; 
+2

Пожалуйста, отредактируйте с дополнительной информацией. Только код и «попробуйте» ответы не приветствуются, поскольку они не содержат содержимого, доступного для поиска, и не объясняют, почему кто-то должен «попробовать это». Мы прилагаем усилия, чтобы стать источником знаний. –

Смежные вопросы