Hogyan követik a felhasználó helyen MapKit

szavazat
10

Én a MapKit megjelenítéséhez a felhasználó tartózkodási helyét képest csapok körül őket. Szeretném tudni, hogy utánozzák a funkcionalitást biztosít Maps segítségével a célkereszt gombra a bal alsó sarokban. Én már tudja, hogy MapKit biztosít CLLocation objektumot a felhasználó tartózkodási helyét keresztül MKUserLocation, csak azt akartam, hogy kérjen tanácsot, hogyan kell tartani összpontosítani az adott helyen. A kezdeti dőlés az volt, hogy egy NSTimer hogy a térkép közepére, hogy összehangolják minden 500ms vagy úgy.

Van egy jobb módja ennek? Van valami épített MapKit hogy hiĂĄnyoznak, amely megvalósítja ezt?

Köszönöm szépen, Brendan

A kérdést 14/03/2010 02:09
a forrás felhasználó
Más nyelveken...                            


4 válasz

szavazat
39

Ha a IOS5 + ez nagyon egyszerű. Csak változtatni a „userTrackingMode” kód használatával, mint például:

[_mapView setUserTrackingMode:MKUserTrackingModeFollow animated:YES];

Ez simán követi a felhasználó aktuális tartózkodási helyét. Ha húzza a térképen akkor is meg a nyomkövetési módban vissza MKUserTrackingModeNone, amely általában a viselkedés, amit akar.

Válaszolt 20/04/2013 10:40
a forrás felhasználó

szavazat
12

Nagyon egyszerű, hogy a térkép frissítéséhez a felhasználó tartózkodási helyét automatikusan, mint a Google Maps. Egyszerűen állítsa showsUserLocation YES

self.mapView.showsUserLocation = YES

... és akkor végre a MKMapViewDelegate a középre a térképen, ha a hely frissül.

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

És lehetővé teszi a felhasználó számára, hogy zoom és pan nélkül ellopta a nézet vissza az aktuális tartózkodási helyét ...

-(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];
}
Válaszolt 01/09/2010 02:42
a forrás felhasználó

szavazat
7

Azt hiszem, hogy én valóban használja a CoreLocation CLLocationManagerés használja annak megbízottja módszer locationManager:didUpdateToLocation:fromLocation:.

Ily módon, ha nem a felső egy NSTimer, és csak frissül, ha van egy új hely áll rendelkezésre.

Akkor húzza a hosszúsági és szélességi a CLLocationtárgy küldeni a locationManager:didUpdateToLocation:fromLocation:módszert, és adja oda a térképen.

Válaszolt 14/03/2010 05:24
a forrás felhasználó

szavazat
0

Megyek Jacob Relkin válaszát. Ez a leírás nyújt lépésről-lépésre eljárást használva CoreLocation egy iPhone app. Remélem ez segít.

Minden jót.

Válaszolt 14/03/2010 06:17
a forrás felhasználó

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