Me gustaría convertir un GeoPoint en un punto de pantalla para identificar todos los objetos que están encima de un evento táctil. lo tanto, he intentado esto:Cómo convertir un GeoPoint en un punto de pantalla de hardware
Projection projection = this.mapView.getProjection();
GeoPoint gie = new GeoPoint(lat, lon);
Point po = new Point();
projection.toPixels(gie, po);
Pero, po.x y po.y no son las coordenadas de pantalla, pero las coordenadas MapView en píxeles en lugar de lat, lon.
Desde el sitio web para desarrolladores de Android:
toPixels (GeoPoint en, android.graphics.Point fuera) Convierte el GeoPoint dado a las coordenadas del pixel en pantalla, en relación con la parte superior izquierda de la MapView que proporcionó esta Proyección.
Entonces, ¿es posible convertirlo en los coords de pantalla correctos?
Quiero saber todo el x GeoPoint que están junto al evento táctil + como en el ejemplo anterior:
----------------------------------------------------------------
(0,0) -----------> x |
| |
| |
| | <-- My screen
| + (touch event) |
\/ x (my GeoPoint) |
y |
|
----------------------------------------------------------------
consigo el caso del tacto de esa manera:
@Override
public boolean onTouchEvent(MotionEvent event) {
float x = event.getX();
float y = event.getY();
Aquí, en este código, xey son los coords de pantalla real (los de hardware, no los mapview)
Sé que también puedo convertir coordenadas x, y en pantalla en GeoPoint para compararlas con mi GeoPoint, pero, debido al nivel de zoom, no puedo obtener lo que quiero.
Gracias @nickt, tendrá una apariencia de su código, pero al final, no es lo que deseo. Porque me gustaría convertir la coordenada del objeto a los coords de la pantalla.Tengo un coche (lat, lon) ---> coche (GeoPoint) ---> automóvil (apunte en MapView) y me gustaría al final ----> coche (xey de la pantalla de la tableta) – Bibu
Entonces, ¿qué tiene que ver el evento táctil con algo? ¿Por qué confundir el problema? Si sabe cómo obtener la xey en relación con el origen del mapa, simplemente agregue view.getLeft y view.getBottom para obtener x/y relativo al origen de la pantalla, como en el código entre comillas. – NickT
En realidad, toco la pantalla para identificar qué coche he tocado. Todos mis autos tienen coordenadas Lat/Lon. Entonces, si quiero identificar qué coche está al lado del evento táctil (puede tener más de un automóvil encima), necesito saber la posición del automóvil en relación con la resolución de la pantalla. Si convierto el evento táctil a la vista del mapa, obtendré una posición lat/lon y la distancia entre el automóvil y el evento táctil dependerá del nivel de zoom. Entonces para mí es más simple comparar con la posición de la pantalla. Espero que mi mensaje sea lo suficientemente claro. – Bibu