Tengo un MapView que estoy mostrando un "radio útil" (piense en la precisión de la coordenada) pulg Utilizando MapView
metersToEquatorPixels, que es sólo por la distancia ecuatorial) no me está dando una distancia lo suficientemente precisa (en píxeles). ¿Cómo calcularías esto si quisieras mostrar un círculo alrededor de tu coordenada, dado el radio?Cómo calcular un radio alrededor de un punto en un Android MapView?
Respuesta
Entonces, Google Maps usa un Mercator projection. Esto significa que cuanto más te alejas del ecuador, más distorsionadas se vuelven las distancias. De acuerdo con this discussion, 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 tenía una consulta sobre esta ecuación. ¿Es esta ecuación lo suficientemente pesada como para ralentizar el rendimiento de una aplicación? Sólo curioso. – Ahmed
La única parte que posiblemente consume mucho tiempo de la fórmula es Math.cos(). Puede usar la función android.util.FloatMath.cos() para acelerar las cosas, o incluso mantener una tabla de factores precalculados, p. por cada grado completo. Entonces podría simplemente decir return (int) (map.getProjection(). MetersToEquatorPixels (meters) * factor [(int) latitude]. – Ridcully
projection.toPixels(GeoP, pt);
float radius = projection.metersToEquatorPixels(50);
Intenta lo siguiente y ... lo usé en mi MapRadius y parece estar funcionando
Si ve mi respuesta, verá exactamente por qué esto no funcionará en todos los casos . –
mMap.addCircle(
new CircleOptions().center(
new LatLng(
bounds.getCenter().latitude,
bounds.getCenter().longitude
)
)
.radius(50000)
.strokeWidth(0f)
.fillColor(0x550000FF)
);
La respuesta requiere formateo y agrega un poco más de contexto sobre cómo funciona tu código y cómo resuelve el problema de OP. – abhiarora
- 1. dibujando un círculo de radio R alrededor de un punto
- 2. Gire un punto alrededor de un punto con OpenCV
- 3. ¿Cómo rotar un vértice alrededor de un cierto punto?
- 4. three.js - ¿cómo giro un cilindro alrededor de un punto específico?
- 5. Dibujar el radio alrededor de un punto en el mapa de Google
- 6. Girar el rectángulo alrededor de un punto
- 7. OpenGL girar alrededor de un punto
- 8. Moviendo iconos en un Android MapView
- 9. cómo rotar alrededor de un punto especificado en fabric.js?
- 10. Rotación de un objeto alrededor de un vector central punto
- 11. Cómo dibujar un MKPolyline en un MapView?
- 12. Calcular coordenadas GPS para formar un radio de tamaño dado
- 13. Calcular el radio en metros usando mapkit
- 14. Coordenadas GPS: 1km cuadrados alrededor de un punto
- 15. ¿Cómo rotar el objeto alrededor de un punto usando cuaterniones?
- 16. Dibuje un círculo con un radio y puntos alrededor del borde
- 17. Cambiar controles de zoom en un MapView
- 18. Android Mapview: fusión de marcadores superpuestos en un nuevo marcador
- 19. Android, ¿Cómo puedo rotar una flecha (imagen) alrededor de un punto fijo?
- 20. Girando alrededor de un punto arbitrario: HTML5 Canvas
- 21. ¿Cómo crear un submenú con botones de radio en Android?
- 22. Eventos de zoom que funcionan en un android Mapview
- 23. Android dibuja un círculo alrededor del texto
- 24. Android draw route en un Mapview con dos POI-s
- 25. Calcular Pi en un teléfono Android
- 26. ¿Cómo girar un icono de Android en su punto central?
- 27. ¿Cómo calcular el latlng de un punto a cierta distancia de otro?
- 28. ¿Cómo calculo un punto en la circunferencia de un círculo?
- 29. La mejor manera de encontrar un punto en un círculo más cercano a un punto dado
- 30. Trigonometría adecuada para girar un punto alrededor del origen
Esto también podría, probablemente, establecerse como: Tengo una coordenada GPS y una distancia, ¿cómo puedo dibujar un círculo que abarque el radio del punto GPS? –
No estoy seguro de entender el problema. ¿Qué quiere decir cuando dice que no le está dando una distancia lo suficientemente precisa? ¿A qué te refieres? Di 100m pero solo muestra un círculo a 50m o algo así? –
Sí. Está apagado por una cantidad significativa. –