Hogyan lehet megjeleníteni a felhasználó tartózkodási helyét a mapkit?

szavazat
3

Szeretném, hogy megjelenítse a kék lüktető pont a felhasználó tartózkodási helyét. Azért csinálom ezt:

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation    *)newLocation fromLocation:(CLLocation *)oldLocation{
//some other stuff here
[self.mapView setShowsUserLocation:YES];
}

De végül is kap

-[MKUserLocation establishment]: unrecognized selector sent to instance 0x125e90

Ha én ezt csinálom valami más módon?

- Edit -

Én is ezt, ott, ahol én végül kap a fenti kivétel:

- (MKAnnotationView *) mapView:(MKMapView *)_mapView viewForAnnotation:(AddressNote *) annotation{

if(annotation.establishment != nil){
//do something}

létesítmény egy egyéni osztályt már a AddressNote. Amikor létesítmény is van értéke, a kivétel történik. Ha nem állítok ShowsUserLocation, minden jól működik, de persze nem látja a felhasználó tartózkodási helyét.

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


3 válasz

szavazat
15

Ha a viewForAnnotationkért, akkor ellenőrizni kell, időjárás, vagy nem az adott magyarázat megfelel az aktuális felhasználó tartózkodási helyét. Ha igen, vissza semmi, különben visszatér a saját normál annoationView.

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id )annotation {
    if (annotation==self.mapView.userLocation)
        return nil;
    //then the rest of your code for all your 'classic' annotations.

[EDIT] egy alternatív módja az, hogy ellenőrizze a fajta az osztály a kommentár:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id )annotation {
    if ([annotation isKindOfClass:[MKUserLocation class]])
        return nil;
    //then the rest of your code for all your 'classic' annotations.

Válaszolt 16/03/2010 10:05
a forrás felhasználó

szavazat
8

Nem biztos benne, hogy mi a tényleges problémát, de nem kell, hogy ezt minden frissítés. Állítsa egyszer létrehozása után mapView, és nem lesz az üzleti életben.

mapView.showsUserLocation = YES;

Szükség lehet nagyítani a térképet a régió, ahol a felhasználó valóban az, hogy a pont, hogy látható legyen.

Válaszolt 14/03/2010 20:07
a forrás felhasználó

szavazat
0

Te a rossz küldött módszer. Mert mapview, akkor használja ezt a küldött módszer, hogy utolérjék a felhasználó tartózkodási helyét:

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
}
Válaszolt 05/05/2011 00:49
a forrás felhasználó

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