2009-11-19 3 views
1

Je télécharge des cartes en utilisant Static Maps V2 API puis afficher la carte sur mon appareil mobile, maintenant je voudrais déplacer la carte en utilisant mon doigt et un écran tactile sur mon appareil.Google Static Maps Déplacer des cartes avec un doigt

Comment puis-je calculer un nouveau centre pour une carte déplacée, en connaissant le centre de carte précédent, le niveau de zoom et combien de cartes de pixels ont été déplacées?

+0

michael pourriez-vous poster comment vous avez fait cela? – Udhaya

+0

bien, c'était il y a quelque temps, mais j'ai utilisé le code ci-dessous pour les recalculs – michael

Répondre

4

Le code suivant devrait faire l'affaire; Ajustement d'appel *** ByPixels(), avec delta étant le décalage en pixels.

static final double GOOGLEOFFSET = 268435456; 
    static final double GOOGLEOFFSET_RADIUS = GOOGLEOFFSET/Math.PI; 
    static final double MATHPI_180 = Math.PI/180; 

    static private final double preLonToX1 = GOOGLEOFFSET_RADIUS * (Math.PI/180); 

    public final static double LonToX(double lon) { 
    return Math.round(GOOGLEOFFSET + preLonToX1 * lon); 
    } 

    public final static double LatToY(double lat) { 
    return Math.round(GOOGLEOFFSET - GOOGLEOFFSET_RADIUS * Math.log((1 + Math.sin(lat * MATHPI_180))/(1 - Math.sin(lat * MATHPI_180)))/2); 
    } 

    public final static double XToLon(double x) { 
    return ((Math.round(x) - GOOGLEOFFSET)/GOOGLEOFFSET_RADIUS) * 180/ Math.PI; 
    } 

    public final static double YToLat(double y) { 
    return (Math.PI/2 - 2 * Math.atan(Math.exp((Math.round(y) - GOOGLEOFFSET)/GOOGLEOFFSET_RADIUS))) * 180/Math.PI; 
    } 

    public final static double adjustLonByPixels(double lon, int delta, int zoom) { 
    return XToLon(LonToX(lon) + (delta << (21 - zoom))); 
    } 

    public final static double adjustLatByPixels(double lat, int delta, int zoom) { 
    return YToLat(LatToY(lat) + (delta << (21 - zoom))); 
    } 
Questions connexes