2013-05-30 31 views
7

Sto tentando di estendere GMSMapView per creare alcune funzioni di clustering e devo rilevare quando l'utente esegue lo spostamento della mappa per disattivare il rendering del cluster e riattivarlo nuovamente al termine.GMSMapView touchesbegan attivato una sola volta

Ho toccato troppo presto e toccato, ma touchesbegan è chiamato solo una volta. Dopo averlo sovrascritto, sono stato in grado di vedere che GMSVectorMapView gestisce i tocchi di GMSMapView e se cambio il ritorno di questa funzione la mappa non si muove.

C'è un modo per catturare questi eventi o dare qualche azione quando l'utente interagisce con la mappa.

migliori saluti, Marlon Pina Tojal

risposta

10

non sono sicuro capisco perfettamente quello che tocca si deve rilevare o perché/come avete bisogno di rilevarli. Tuttavia, ho avuto un problema simile nel rilevare i gesti di pan utente su GMSMapView a causa di touchesbegan: chiamato solo una volta.

Avevo il mio pulsante "posizione corrente" che consente all'utente di attivare o disattivare la centratura della mappa sulla loro posizione. Avevo bisogno di scoprire quando l'utente stava "spostando" la mappa senza interrompere la ricezione della mappa del panning (volevo che anche la mappa effettuasse il panning).

In primo luogo, ho creato la mappa:

// Creates Map centered at current location 
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:theLocationManager.location.coordinate.latitude 
                 Longitude:theLocationManager.location.coordinate.longitude 
                  zoom:15]; 
theMapView = [GMSMapView mapWithFrame:CGRectZero camera:camera]; 
theMapView.myLocationEnabled = YES; 
theMapView.delegate = self; 
theMapView.camera = camera; 
self.view = theMapView; 

Poi ho creato un sistema di riconoscimento gesto padella e ha aggiunto che alla proprietà di riconoscimento gesto theMapView s'. Ho fatto in modo di fissare l'obiettivo di self con il metodo selettore didPan:

// Watch for pan 
UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget: self action:@selector(didPan:)]; 
theMapView.gestureRecognizers = @[panRecognizer]; 

Infine, nello stesso file principale, ho implementato il metodo didPan: reagire quando le vaschette utente:

- (void) didPan:(UIPanGestureRecognizer*) gestureRecognizer 
{ 
    NSLog(@"DID PAN"); 
    // React here to user's pan 
} 
+0

la sua risposta davvero perfetta. Grazie +1 –

1

Ultimo aggiornamento c'è un metodo delegato nelle mappe di Google

- (void)mapView:(GMSMapView *)mapView didTapAtCoordinate:(CLLocationCoordinate2D)coordinate; 
Problemi correlati