2012-11-27 1 views
-2

Je travaille avec google maps api 10 depuis un certain temps et il y a un bug que je ne peux pas tout simplement parce que solution im 99,9% que sa bibliothèque au sein de googles.la recherche d'une solution de contournement pour un bogue dans google maps Projection

Je fais beaucoup de projection .toPixels() pour dessiner des choses et tout fonctionne très bien. Je zoom avec des méthodes de zoom personnalisé mapController.setZoom(getZoom() +1) et tout cela fonctionne jusqu'à ce que j'utilise un zoom pincement (zoom à 2 doigts). Après cela, la projection semble être coincée dans certains niveaux de zoom.

Si je zoom par pincement de 12 à 11 les cartes getZoomLevel() me donne 11 (il signale toujours le bon niveau). Maintenant, si j'utilise ma méthode zoomOut je suis au niveau 13 et la projection calcule tout droit pour le niveau 13 mais chaque zoomOut ne change que le niveau de zoom des cartes (en interne, rappelez-vous, l'appareil n'a pas d'Internet donc pas de données cartographiques). La projection continue à calculer tout comme si c'était encore le zoom 13!
Devrais-je zoomer? La projection passe soudainement au niveau 11, quel que soit le niveau réel de la carte. Donc, si je pince le zoom à 12, la projection est bloquée à 11/13 et ne fera que sauter entre ces deux si je zoome sur/in.
IF i nouveau pincement zoom, la projection est mis à jour, mais bloqué à nouveau au niveau auquel je pincement zoomé.

Ainsi, un pincée de zoom sans Internet tue complètement la projection et la carte tout devient inutile (dans mon cas, je ne ai pas vraiment besoin de la carte visuelle, j'ai juste besoin sa traduction GeoPoint, thats la partie la plus importante). Est-ce que quelqu'un sait un correctif/solution de contournement ou tout ce qui pourrait m'aider autre que désactiver plus de 1 pointeur dans le sur-contact?

Carte Stuff dans le constructeur de mon customMapView

setVisibility(View.VISIBLE); 

    mapController = getController(); 

    mapController.setZoom(17); 

    setBuiltInZoomControls(false); 
    getZoomButtonsController().setVisible(false); 

    setSatellite(false); 
    setTraffic(false); 
    setClickable(true); 
    preLoad(); 


et thats comment je zoom avec les boutons personnalisés

mapController.setZoom(getZoomLevel() + 1); // zoom in 
mapController.setZoom(getZoomLevel() - 1); // zoom out 


1) boutons de zoom fonctionnent
2) pincer zoom arrière
3) maintenant les boutons/zoom via le bouton montre le comportement comme décrit ci-dessus


Informations additionnelles:
Je viens d'utiliser les applications « myTracks » et « couple ».
Les deux utilisent googlemaps.
Dans les deux j'ai enregistré des pistes.
Maintenant, si je désactive Internet et utiliser le zoom à 2 doigts et après que le zoom avant/arrière avec les boutons habituels, à un moment donné de la piste erre au loin dans une certaine direction, même si elle est parfaitement centrée. Jusqu'au moment où la piste est partie après beaucoup de zoom arrière.
La seconde je réactiver internet et la carte est capable de charger quelques tuiles le NEXT zoom fonctionne et tout va bien ... car la carte semble nécessiter quelques données d'internet pour calculer quelque chose dans la projection et cela quelque chose semble être fourni par un zoom à 2 doigts ... c'est comme ça que je le vois.

3 Apps, tout le même problème ...

Répondre

0

Votre question, il est assez déroutant et vous devez reformuler ce.

Mais au moins, je compris que vous utilisez le MapView dans un appareil de se connecter à Internet et que vous avez un problème avec la synchronisation de vos projections niveau de zoom de la carte. Tout d'abord, le problème n'est pas dans google maps et vous aurez besoin de chercher un problème dans votre code.

L'erreur la plus courante réaliser la synchronisation entre getZoomLevel() et Projection est qu'il est souvent oublié que le premier est une valeur entière (en étapes discrètes augmente/diminue multiples de 1), tandis que l'image de la carte et de projection peuvent prendre des valeurs dans entre eux pour fournir à l'utilisateur un zoom avant/arrière plus lisse.

Par exemple, lorsque vous pincez pour zoomer, pendant que vous gardez vos doigts sur l'écran et changer la taille de la carte (et projections) la méthode getZoomLevel() retourne toujours le niveau de zoom que la carte a quand vous avez commencé le pincement à zoom . Ce n'est qu'après avoir arrêté la pincée pour zoomer (enlever le doigt de l'écran) que la méthode getZoomLevel() renverra le dernier niveau de zoom sélectionné. Mais si vous ne terminez pas ici, car une animation continue l'image de la carte zoom avant/arrière au niveau de zoom entier le plus proche (celui qui a commencé à être retourné par getZoomLevel() après avoir arrêté le pincement pour zoomer).

J'espère que vous l'avez compris. Si ce n'est pas le cas, affichez un exemple de code illustrant le problème et vous obtiendrez de l'aide pour le corriger.

Cordialement.

+0

je suis désolé, j'ai décrit le problème aussi clairement que je peux:/mais il n'a rien à voir avec ce que nous décrivons. Im travaillant avec la carte depuis près de 2 ans maintenant, ce n'est pas si simple, le problème est enterré quelque part au fond de la bibliothèque – NikkyD

+0

Je travaille aussi avec google map depuis près de 2 ans :-) Avant de poster ma réponse, j'ai testé un de mes programmes affichant un chemin avec 10.000 points dans un périphérique déconnecté du réseau. Il n'a jamais échoué à gérer correctement le zoom. J'ai essayé plusieurs pichs pour zoomer (in et out) suivi par des boutons de zoom (et aussi un zoom automatique développé par moi) et tous ont bien fonctionné. Lisez attentivement ce que j'ai décrit ci-dessus et effectuez d'autres tests (avec des messages de journal pour afficher les niveaux de zoom) et vous serez en mesure d'affiner le problème. – Luis

+0

Si vous le souhaitez, postez un exemple de code souffrant du problème et je vais le vérifier. Cordialement – Luis

Questions connexes