MapKit ile kullanıcı yeri izlemesini nasıl

oy
10

Ben çevrelerindeki pimleri kullanıcının konumu göreli görüntülemek için MapKit kullanıyorum. Ben Haritalar ekranın sol alt köşesindeki Artı düğmesi aracılığıyla sağladığı işlevsellik taklit edebilmek istiyorum. Ben MapKit MKUserLocation aracılığıyla kullanıcının konumuna sahip bir CLLocation nesnesi sağladığını zaten farkındayım, ben sadece o konuma odaklanmayı tutmalı konusunda tavsiye aramaya istedi. Benim ilk eğim her 500ms kadar koordinat haritanın bir NSTimer kullanmaktı.

Bunu yapmak için daha iyi bir yolu var mı? Bunu Bunun olacak özlüyorum MapKit yerleşik bir şey var mı?

Çok teşekkürler, Brendan

Oluştur 14/03/2010 saat 02:09
kaynak kullanıcı
Diğer dillerde...                            


4 cevaplar

oy
39

Eğer iOS5 üzerinde iseniz + Bu ÇOK kolaydır. Sadece kodu gibi kullanarak "userTrackingMode" değiştirin:

[_mapView setUserTrackingMode:MKUserTrackingModeFollow animated:YES];

Bu sorunsuz kullanıcılara mevcut konumunu takip eder. Haritaya sürüklerseniz bile geri izleme modunu ayarlamak olacak MKUserTrackingModeNonehangi genellikle istediğiniz davranıştır.

Cevap 20/04/2013 saat 10:40
kaynak kullanıcı

oy
12

Bu harita otomatik sadece google maps gibi kullanıcı konumu güncellemesine sahip olmak gerçekten basit. Basitçe için showsUserLocation set EVET

self.mapView.showsUserLocation = YES

... ve daha sonra yer güncellendiğinde haritayı yeniden üzere MKMapViewDelegate uygulamak.

-(void)               mapView:(MKMapView *)mapView 
        didUpdateUserLocation:(MKUserLocation *)userLocation
{
    if( isTracking )
    {
        pendingRegionChange = YES;
        [self.mapView setCenterCoordinate: userLocation.location.coordinate
                                 animated: YES];
    }
}

Ve kullanıcı Büyütmek & anki konumuna geri görünümü çalmadan kaydırmak için izin vermek ...

-(void) mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated
{
    if( isTracking && ! pendingRegionChange )
    {
         isTracking = NO;
         [trackingButton setImage: [UIImage imageNamed: @"Location.png"] 
                         forState: UIControlStateNormal];
    }

    pendingRegionChange = NO;
}

-(IBAction) trackingPressed
{
    pendingRegionChange = YES;
    isTracking = YES;
    [mapView setCenterCoordinate: mapView.userLocation.coordinate 
                        animated: YES];

    [trackingButton setImage: [UIImage imageNamed: @"Location-Tracking.png"] 
                    forState: UIControlStateNormal];
}
Cevap 01/09/2010 saat 02:42
kaynak kullanıcı

oy
7

Ben aslında CoreLocation kullanmak olacağını düşünüyorum CLLocationManagerve bunun temsilci yöntemi kullanın locationManager:didUpdateToLocation:fromLocation:.

Bu şekilde, bir yükü yok NSTimer, ve mevcut yeni bir konum varken sadece günceller.

Sen boylam çekin ve gelen enlem olabilir CLLocationgönderilen nesne locationManager:didUpdateToLocation:fromLocation:yöntemi ve harita görünümüne geçmek.

Cevap 14/03/2010 saat 05:24
kaynak kullanıcı

oy
0

Ben Jacob Relkin cevabı ile gitmek. Bu öğretici bir iPhone app CoreLocation kullanarak bir adım adım prosedürü sağlar. Bu size yardımcı olur umarım.

Herşey gönlünce olsun.

Cevap 14/03/2010 saat 06:17
kaynak kullanıcı

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