Création d'un système type "Google Maps"
Bonjour !
Je dois réaliser une application proche du système Google Maps, mais en utilisant des fonds de carte personnalisés (crées par ma boite, ces derniers au format SVG)
Afin de garder les interactions Javascript du SVG, je dois donc passer par des WebView (Stoppez moi si je me trompe ! ^^)
Mon problème est le suivant :
Comment gérer facilement plusieurs niveaux de zoom dans une WebView ? Pour cela, j'ai testé de faire un appel a "loadUrl()" une fois un certain niveau de zoom atteint et calculer le scroll effectué sur la vue actuelle afin de replacer la nouvelle comme il le faut, mais sans succès ... Le nouveau SVG chargé se mets en (0, 0) avant de se déplacer au mauvais endroit (problème de calcul mais ce n'est pas tellement le sujet du problème)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| @Override
public boolean onTouchEvent(MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_UP) {
//Log.i("Scale", Float.toString(getScale()));
// Calcul des scrolls ...
if(getScale() > 4.0) {
loadUrl("file:///android_asset/zoom4.svg");
}
}
return super.onTouchEvent(event);
} |
Je suis ici dans une classe perso héritant de WebView, afin de redéfinir les TouchEvents.
Si quelqu'un aurait une idée de comment bien procéder pour faire cela, je suis preneur d'avis !
Merci à tous
PS : Pour ce qui est du "getScale()" dans le code, je sais qu'il est deprecated, seulement, pour mes tests cela m'est plus rapide que de le calculer manuellement