animasyonlu: tamamlandıktan MKMapview setRegion olduğunu nasıl bilebilirim?

oy
18

Benim MKMapView bir bölgeyi ayarlayın ve sonra haritanın KD ve GB köşesine gelen koordinatları bulmak istiyoruz.

This code works just fine to do that:
//Recenter and zoom map in on search location
MKCoordinateRegion region =  {{0.0f, 0.0f}, {0.0f, 0.0f}};
region.center = mySearchLocation.searchLocation.coordinate;
region.span.longitudeDelta = 0.01f;
region.span.latitudeDelta = 0.01f;
[self.mapView setRegion:region animated:NO]; //When this is set to YES it seems to break the coordinate calculation because the map is in motion

//After the new search location has been added to the map, and the map zoomed, we need to update the search bounds
//First we need to calculate the corners of the map so we get the points
CGPoint nePoint = CGPointMake(self.mapView.bounds.origin.x + mapView.bounds.size.width, mapView.bounds.origin.y);
CGPoint swPoint = CGPointMake((self.mapView.bounds.origin.x), (mapView.bounds.origin.y + mapView.bounds.size.height));

//Then transform those point into lat,lng values
CLLocationCoordinate2D neCoord;
neCoord = [mapView convertPoint:nePoint toCoordinateFromView:mapView];
CLLocation *neLocation = [[CLLocation alloc] initWithLatitude:neCoord.latitude longitude:neCoord.longitude];

CLLocationCoordinate2D swCoord;
swCoord = [mapView convertPoint:swPoint toCoordinateFromView:mapView];
CLLocation *swLocation = [[CLLocation alloc] initWithLatitude:swCoord.latitude longitude:swCoord.longitude];

Sorun şu ki harita yakınlaştırma animasyon istiyorum olduğunu. Ben setRegion set Ancak,: EVET animasyonlu, ben (animasyon tamamlandığında yani önce) çıkış yolu yakınlaştırılmış haritadan koordinatları elde sonu. animasyon yapıldığını bir sinyal almak için herhangi bir yolu var mı?

Oluştur 17/01/2010 saat 20:19
kaynak kullanıcı
Diğer dillerde...                            


2 cevaplar

oy
21

Mapkit kullanılan ancak asla MKMapViewDelegate bir yöntemi vardır mapView:regionDidChangeAnimated:aradığınız şey olarak görünüyor.

Cevap 17/01/2010 saat 20:38
kaynak kullanıcı

oy
5

Ben bu süper eski olduğunu biliyorum ama her ihtimale karşı başkasının cevabını bakarak gelir, burada bir alternatiftir.

Bu versiyonda ilgili güzel bir şey İlki yerine bu bir hemen denir çünkü geri arama yönteminde Bu hardcoding / tahmin etmenin tamamlandıktan tam da bir tamamlama animasyon çalıştırabilirsiniz olmasıdır.

[MKMapView animateWithDuration:1.0 animations:^{
    [mapView setRegion:mapRegion animated:YES];
} completion:^(BOOL finished) {
    [UIView animateWithDuration:1.0 animations:^{
        self.mapDotsImageView.alpha = 1.0;
    }];
}];

ya da sadece

// zoom in...
let km3:CLLocationDistance = 3000
let crTight = MKCoordinateRegionMakeWithDistance(location.coordinate, km3, km3)
MKMapView.animate(withDuration: 1.0, animations: { self.theMap.region = crTight })
Cevap 30/07/2016 saat 00:23
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more