我想一個GeoPoint轉換爲屏幕點,以確定哪些是上面的觸摸事件的所有對象。 所以,我已經試過這樣:如何一個GeoPoint轉換成硬屏點
Projection projection = this.mapView.getProjection();
GeoPoint gie = new GeoPoint(lat, lon);
Point po = new Point();
projection.toPixels(gie, po);
但是,po.x和po.y不在屏幕COORDS,但在像素,而不是緯度,經度的MapView COORDS。
從Android開發者網站:
toPixels(GeoPoint對象中,android.graphics.Point出) 給定的GeoPoint到屏幕上的像素座標,相對於轉換左上角所提供這個的MapView的投影。
那麼,是不是可以將其轉換成正確的屏幕COORDS?
我想知道所有的X的GeoPoint這是旁邊+觸摸事件就像上面的例子:
----------------------------------------------------------------
(0,0) -----------> x |
| |
| |
| | <-- My screen
| + (touch event) |
\/ x (my GeoPoint) |
y |
|
----------------------------------------------------------------
我得到這樣的觸摸事件:
@Override
public boolean onTouchEvent(MotionEvent event) {
float x = event.getX();
float y = event.getY();
在這裏,在這個代碼中,x和y是真正的屏幕座標(硬件座標,而不是地圖視圖座標)
我知道,我也可以轉換的x,y屏幕座標的GeoPoint他們比較我的GeoPoint,但由於縮放級別的,我無法得到我想要的東西。
謝謝@nickt,會得到一個看你的代碼,但到了最後,這是不是我的願望。因爲我想將對象座標轉換爲屏幕座標。我有一輛車(lat,lon)--->汽車(GeoPoint)--->汽車(Point on MapView),我最後要---- ----汽車(平板電腦屏幕的x和y) – Bibu
那麼觸摸事件與什麼有關呢?爲什麼混淆這個問題?如果您知道如何獲得相對於mapview原點的x和y,那麼只需添加view.getLeft和view.getBottom即可獲得相對於屏幕原點的x/y,如引用的代碼中所示。 – NickT
其實,我觸摸屏幕來識別我碰過哪輛車。我所有的汽車都有經緯度座標。所以,如果我想要確定哪個車在觸摸事件旁邊(可以有多個車在它上面),我需要知道相對於屏幕分辨率的汽車位置。如果我將觸摸事件轉換爲mapview,我將獲得經緯度位置,而汽車和觸摸事件之間的距離取決於縮放級別。所以對我來說,與屏幕位置進行比較是最簡單的。希望我的信息足夠清楚。 – Bibu