2013-04-11 7 views
5

In Apple Mappe c'è un metodo delegatoQual è il metodo delegato per Ios Google maps per aver terminato lo scrolling?

-(void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated 

e viene attivato quando finisco scorrimento o la panoramica della mappa, ma non riuscivo a trovare tale metodo per le mappe di Google. C'è un metodo

- (void)mapView:(GMSMapView *)mapView didChangeCameraPosition:(GMSCameraPosition *)position 

ma questo metodo continua a sparare, mentre la mappa è ancora in fase di scorrere e non voglio questo. Devo modificare una proprietà solo al termine dello scorrimento.

risposta

11

L'ultima versione SDK versione 1.4.0 - Luglio 2013 ha aggiunto un nuovo metodo delegato

- (void)mapView:(GMSMapView *)mapView idleAtCameraPosition:(GMSCameraPosition *)position 

che verrà attivato alla fine di ogni movimento della fotocamera o di azione a scorrimento

1

C'è una richiesta di funzionalità per aggiungere qualcosa di simile:

https://code.google.com/p/gmaps-api-issues/issues/detail?id=4722

Nel frattempo si potrebbe forse lavorare intorno ad esso utilizzando un timer normale che controlla se la posizione mappa è cambiato da quando l'ultima chiamata al timer. In caso contrario, l'utente ha smesso di spostare la mappa e quindi è possibile aggiornare la proprietà.

0

Attenzione idleAtCameraPosition è quando la mappa smette di muoversi non quando alzi il dito.

E come per Google sdk iOS 1.7 ho notato che viene attivato in anticipo anche quando si ha ancora il dito sulla mappa.

Quindi, se lo stai usando per ridisegnare sovrapposizioni/marker, potrebbe accadere troppo presto e causare balbuzie.

Ho dovuto sottoclasse GSMapView e aggiungere PanGestureRecognizer >> Stato ENDED da ottenere quando si solleva il dito.

vedere https://github.com/clearbrian/GoogleMapiOS_TapEndedGesture