Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [OBJECTIVE-C] Problema con MapKit e showsUserLocation

    Ciao a tutti ho un problema con il mapkit e con lo showsUserLocation.

    Ho una vista dove tramite il mapkit io creo una mappa e la posiziono secondo delle coordinate CLLOCATIONCOORDINATE2D così:

    codice:
    map = [[MKMapView alloc] init];
    map.delegate = self;
    map.showsUserLocation = NO;
    self.view = map;
    
     MKCoordinateRegion regionToscana;
     MKCoordinateSpan span;
     span.latitudeDelta=0.2;
     span.longitudeDelta=0.2;
     regionToscana.span=span;
     regionToscana.center=annotationCenter;
     regionToscana = MKCoordinateRegionMakeWithDistance(CLLocationCoordinate2DMake(annotation.coordinate.latitude, annotation.coordinate.longitude), 100000, 100000);
     [map setRegion:regionToscana animated:TRUE];
     [map regionThatFits:regionToscana];
    E tutto mi funziona correttamente....

    Poi ho fatto un tasto che se premuto dovrebbe mandarmi alla "mia attuale posizione" e il metodo che mi manda alla posizione è questo:

    codice:
    - (void)miaPosizione {
      map.showsUserLocation = YES;
      MKCoordinateSpan span = MKCoordinateSpanMake(0.01, 0.01);
      MKCoordinateRegion region = MKCoordinateRegionMake(map.userLocation.coordinate, span);
      [map setRegion:region animated:YES];
    }
    Il problema è questo.... se premo per visualizzare la mia posizione la
    prima volta vengo mandato ad un punto in mezzo all'oceano e senza il
    pallino blu che mi identifica.. se premo una seconda volta invece allora
    si vengo localizzato e mandato al punto corretto dove sono e appare
    anche il pallino blu che mi identifica.



    Il problema sembra essere che al primo giro la app malgrado il gps sia
    attivato (c'è il simbolo) nn sappia dove io sia, infatti se quando
    dichiaro la mappa al posto di NO nello showsUserLocation metto YES
    allora il tasto del metodo miaPosizione funziona anche alla prima
    pressione, il problema è che se metto YES al posto del NO la mappa
    invece che aprirsi alle coordinate che voglio io si apre dove sono
    io....



    Aiuto come posso risolvere?

  2. #2
    Ciao, non sono pratico di objective-c e di queste mappe di cui parli, però penso che se che tu possa fare così:

    metti showUserLocation = NO, poi crei un boolean e lo imposti false e fai in modo che quando clicchi il bottone il boolean diventa true e tramite un IF imposti showUserLocation = YES.

    Ad esempio:

    codice:
    // quando clicchi sul bottone
    
    iltuoboolean = true;
    
    if(iltuoboolean == true){
         showUserLocation = YES;
    }
    Dopodichè ripeto che non ho mai avuto a che fare con objective-c,c e c++, sto solo andando a logica...

  3. #3
    Purtroppo la cosa non è così semplice... e comunque in grandi soldoni è quello che già faccio e non funziona.
    All'avvio la app imposta lo shouuserlocation a NO poi quando premi sul pulsante viene chiamato il metodo che lo imposta a YES, ma solo quando ri-premo sul pulsante allora vengo geolocalizzato e si attiva il puntatore della mia posizione... in pratica credo che alla prima pressione attivo lo showuserlocation e alla seconda vengo geolocalizzato, il problema mio è che vorrei fare tutto alla prima pressione del tasto....

  4. #4
    Forse al primo click sul bottone ti imposta showUserLocation = YES e solo al secondo click ti fa un "refresh", mi viene in mente il metodo repaint() di Java, non si può fare una cosa simile?

  5. #5
    Ho provato a fare un altro metodo che al primo giro lo imposta a YES e poi chiama il secondo metodo che fa la stessa cosa ma nulla da fare...

    codice:
    - (void)miaPosizione {
      map.showsUserLocation = YES;
      [self miaPosizione2];
    }
    
    - (void)miaPosizione2 {
      map.showsUserLocation = YES;
      MKCoordinateSpan span = MKCoordinateSpanMake(0.01, 0.01);
      MKCoordinateRegion region = MKCoordinateRegionMake(map.userLocation.coordinate, span);
      [map setRegion:region animated:YES];
    }
    ma dove sbaglio? non riesco proprio a capire...

  6. #6
    Come ho già detto non sono pratico di queste cose, però so che su java quando scrivi qualcosa in questo modo:

    codice:
    MKCoordinateSpan span =MKCoordinateSpanMake(0.01,0.01);
    
    //Oppure così:
    
    MKCoordinateRegion region =MKCoordinateRegionMake(map.userLocation.coordinate, span);
    
    Stai solo creando un oggetto, ma non lo stai richiamando a funzionare...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.