SORU
18 Mart 2010, PERŞEMBE


Nasıl CLLocationManager olmadan kullanıcılar mevcut konum için bir MKMapView zoom yapabilirim?

Bir seçenek "kullanıcıları Göster geçerli konum:" hangi otomatik olarak map kullanıcıların bir yeri gösterecektir. " diye bir şey var MKMapView ile

(Eğer değişirse) bulunduğunda hareket ettirin ve bu konumu yakınlaştırmak için istiyorum.

Sorun, herhangi bir yöntem, kullanıcı konum hiçbir yerde 5 ** kod koymak zorunda kaldım map güncelleme olduğunda çağrılacak görünmüyor.

Bunun için zoom/hareket edebilmem MKMapView var olduğunda haberdar olmak için bir yol (veya güncelleme) kullanım yeri var mı? Eğer ben kullanmak benim kendi CLLocationManager güncelleştirmeleri ben alamadım karşılık ile güncelleştirmeleri kullanıcı işareti göster, çok aptal görünüyor benim göster taşır ve yakınlaştırır saniye önce mavi pin görünür.

Bu temel işlevleri gibi geliyor, ama bu hafta bir çözüm aramakla geçirdim ve hiçbir şey açık değil.

CEVAP
5 NİSAN 2010, PAZARTESİ


MKMapView userLocation.location özelliği KVO bildirimleri için kayıt olmalısınız.

Bunu yapmak için, harita görünümü başlatıldı yerde senin ViewController veya herhangi bir yerde viewDidLoad: Bu kod.

[self.mapView.userLocation addObserver:self  
        forKeyPath:@"location"  
           options:(NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld)  
           context:NULL];

Bu yöntem KVO bildirimleri almak için uygulamak

- (void)observeValueForKeyPath:(NSString *)keyPath  
                      ofObject:(id)object  
                        change:(NSDictionary *)change  
                       context:(void *)context {  

    if ([self.mapView showsUserLocation]) {  
        [self moveOrZoomOrAnythingElse];
        // and of course you can use here old and new location values
    }
}

Bu kod benim için çalışıyor.
BTW, self Bu bağlamda benim ViewController.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • LevelUpTuts

    LevelUpTuts

    20 Ocak 2012
  • tatermoog

    tatermoog

    2 AĞUSTOS 2006
  • TheJoeycool2010

    TheJoeycool2

    12 Temmuz 2010