Sto utilizzando i servizi di mappe di Google in iOS (Swift) e Android. In Android, la vista mappa ha un metodo chiamato animatreCamera
che ha un'animazione in cui il movimento ha un effetto "zoom indietro - zoom in" (se entrambe le fotocamere hanno lo stesso zoom, la vista della mappa ridurrà la prima parte del movimento e quindi ingrandire la seconda parte). Voglio ottenere questo effetto con il GMSMapView
in iOS, ho provato i seguenti metodi: animateToCameraPosition
, animateToLocation
, animateWithCameraUpdate
, moveCamera
e l'impostazione della fotocamera da mapView.camera = GMSCameraPosition(target: location, zoom: 15, bearing: 0, viewingAngle: 0)
e nessuno di loro ha questa animazione. Se possibile, come posso ottenere questa animazione quando si sposta la fotocamera?GMSMapView animateToCameraPosition zoom in - zoom out animazione
5
A
risposta
4
Penso che non ci sia un modo diretto per archiviare la stessa animazione nell'SDK di Google Maps.
Una soluzione può usare il metodo di iOS dispatch_after
, prima è possibile definire un metodo per ritardare il numero di secondi che si desidera:
func delay(#seconds: Double, completion:()->()) {
let popTime = dispatch_time(DISPATCH_TIME_NOW, Int64(Double(NSEC_PER_SEC) * seconds))
dispatch_after(popTime, dispatch_get_main_queue()) {
completion()
}
}
Quindi è possibile diminuire la fotocamera, passare a una posizione, poi lo zoom in con il metodo delay
:
delay(seconds: 0.5) {() ->() in
var zoomOut = GMSCameraUpdate.zoomTo(kGMSMinZoomLevel)
mapView.animateWithCameraUpdate(zoomOut)
delay(seconds: 0.5, {() ->() in
var vancouver = CLLocationCoordinate2DMake(49.26,-123.11)
var vancouverCam = GMSCameraUpdate.setTarget(vancouver)
mapView.animateWithCameraUpdate(vancouverCam)
delay(seconds: 0.5, {() ->() in
var zoomIn = GMSCameraUpdate.zoomTo(kGMSMaxZoomLevel)
mapView.animateWithCameraUpdate(zoomIn)
})
})
}
Si utilizza il proprio valore di zoom, io uso kGMSMinZoomLevel
e kGMSMaxZoomLevel
qui.
0
Swift 4:
func delay(seconds: Double, closure: @escaping() ->()) {
DispatchQueue.main.asyncAfter(deadline: .now() + seconds) {
closure()
}
}
Poi chiamarlo:
delay(seconds: 0.5) {() ->() in
let zoomOut = GMSCameraUpdate.zoom(to: 10)
self.mapView.animate(with: zoomOut)
self.delay(seconds: 0.5, closure: {() ->() in
var vancouver = CLLocationCoordinate2DMake(49.26,-123.11)
var vancouverCam = GMSCameraUpdate.setTarget(vancouver)
self.mapView.animate(toLocation: vancouverCam)
self.delay(seconds: 0.5, closure: {() ->() in
let zoomIn = GMSCameraUpdate.zoom(to: 15)
self.mapView.animate(with: zoomIn)
})
})
}
Problemi correlati
- 1. animazione per lo zoom in e zoom out in Android per IMAGEVIEW
- 2. Zoom out in Octave/gnuplot
- 3. Animazione rotazionale per combinazione lineare di matrici di trasformazione porta a Zoom-In-Zoom-out
- 4. Attivazione del browser Funzioni di zoom in e zoom out
- 5. Tirare per Zoom Animazione
- 6. Raphael carta zoom animazione
- 7. Android - Zoom animazione utilizzando AnimatorSet
- 8. salta allo zoom out con UIScrollView
- 9. Come implementare Zoom-in e Zoom-Out con il grafico a linee Core-Plot su iPhone?
- 10. Zoom indietro Zoom in immagine in NSImageView
- 11. È possibile rilevare l'evento zoom in/out in iOS Safari?
- 12. Storyboard Zoom In/Out Tasti di scelta rapida
- 13. Animazione/zoom di una vista personalizzata focalizzata in tvOS
- 14. Pinch-zoom con GLSurfaceView
- 15. zoom intero UICollectionView
- 16. Zoom JPanel in Java Swing
- 17. Grafico zoom in D3
- 18. Catching Mac trackpad zoom
- 19. d3.js diagramma a dispersione - zoom/trascinamento confini, pulsanti zoom, reimpostazione zoom, calcolo mediana
- 20. Visualizza l'animazione del controller come lo zoom e lo zoom
- 21. qual è la differenza tra * zoom e zoom?
- 22. Pizzico Zoom in webview [Android]
- 23. zoom in PhoneGap per Android
- 24. Zoom e panoramica in KineticJS
- 25. Disabilita pan/zoom in com.google.android.maps.MapView
- 26. Come aggiungere lo zoom nei pulsanti di zoom in visjs usando angularjs?
- 27. UIScrollView zoom con Autolayout
- 28. PhoneGap iOS InAppBrowser Zoom
- 29. 'Più vicino' zoom
- 30. Android GridView pizzico zoom