Tengo un MapView que estoy mostrando un modo de «radio» (creo que la precisión de las coordenadas). El uso de MapView‘s Proyección‘s metersToEquatorPixels, que hay que reconocer es de guinea ecuatorial distancia) no es que me da una suficientemente precisas distancia (en píxeles). ¿Cómo calcular este si quería mostrar un círculo alrededor de tu coordinar, dado el radio?

Esto también podría, probablemente, se declaró como: tengo un GPS coordenadas y la distancia, ¿cómo puedo dibujar un círculo que abarca el radio desde el punto GPS?
No estoy seguro de entender el problema – ¿a qué te refieres cuando dices que no te está dando una precisa la distancia suficiente? Que significaba para él decir 100m pero sólo muestra un círculo de 50 metros o algo?
Sí. Es por una cantidad significativa.
En realidad el metersToRadius función no mal, he probado con un mapview y el dibujo de un círculo cuando haces clic en una ubicación. Yo no soy bueno en las matemáticas, la fórmula de necesidades de un experto 😉

OriginalEl autor Jeremy Logan | 2010-01-16

3 Comentarios

  1. 28

    Así, Google Maps utiliza un La proyección de Mercator. Esto significa que cuanto más obtiene a partir del ecuador de la más distorsionada de la distancia se hace. De acuerdo a esta discusión, la forma correcta de convertir para distancias es algo así como:

    public static int metersToRadius(float meters, MapView map, double latitude) {
        return (int) (map.getProjection().metersToEquatorPixels(meters) * (1/ Math.cos(Math.toRadians(latitude))));         
    }
    Gracias por la respuesta. Pero yo tenía una consulta acerca de esta ecuación. Es esta ecuación lo suficientemente pesado como para ralentizar el rendimiento de una aplicación? Sólo por curiosidad.
    La única posiblemente el tiempo que consume parte de la fórmula es la de Matemáticas.cos(). Usted puede utilizar el android.util.FloatMath.cos() función para acelerar las cosas, o incluso mantener una tabla de precalculadas factores, por ejemplo, por cada grado completo. Después podría decir return (int) (mapa.getProjection().metersToEquatorPixels(metros) * factor[(int)latitud].

    OriginalEl autor Jeremy Logan

  2. 0
    mMap.addCircle(
        new CircleOptions().center(
            new LatLng(
                bounds.getCenter().latitude, 
                bounds.getCenter().longitude
            )
        )
        .radius(50000)
        .strokeWidth(0f)
        .fillColor(0x550000FF)
    );
    La respuesta requiere de formato y añadir un poco más de contexto sobre cómo funciona el código y cómo resolver el problema de la OP!

    OriginalEl autor Mohan Kumar

  3. -1
    projection.toPixels(GeoP, pt);
    float radius = projection.metersToEquatorPixels(50);

    Probar esto y ver… lo he usado en mi MapRadius y parece estar funcionando

    Si ves mi respuesta verá exactamente por qué esto no funciona en todos los casos.

    OriginalEl autor Loshi

Dejar respuesta

Please enter your comment!
Please enter your name here