2015-10-11 110 views
2

我目前正在開發一個Android應用程序,在地圖上「模擬」一個鼠標(帶指針)。我已經實現了pad,它可以在地圖圖層上移動指針(一個簡單的小視圖)。現在我需要創建addMarker功能。我擁有的是:Android:從像素座標獲取經度/緯度

  • (x,y)以像素爲單位的指針座標(或在dip中);
  • 寬度和高度貼圖屬性。

我的問題是:我怎樣才能計算被指針觸及的點的緯度/經度?非常感謝!

+0

如果是真實地圖,您應該可以在GoogleMap上獲得點擊位置 – Eenvincible

+0

Hi @Eenvincible,感謝您的回覆!是Android地圖視圖,我無法使用我的設備,因爲我應該使用指針! – JohnEisenheim

回答

1

,你可以這樣做:

Projection myProjection = myMap.getProjection() 

拿到地圖的投影:https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMap.html#getProjection()

返回,您可以使用 座標和緯度/經度座標屏幕之間進行轉換投影對象。

返回的投影是當前投影的快照,並且 在相機移動時不會自動更新。由於此操作 非常昂貴,因此每個屏幕只能顯示一次投影。 Google地圖使用墨卡託投影從 地理數據創建地圖,並將地圖上的點轉換爲地理座標 。

然後:

LatLng markerPosition = myProjection.fromScreenLocation(pointerPosition); 

https://developers.google.com/android/reference/com/google/android/gms/maps/Projection.html#fromScreenLocation(android.graphics.Point)

返回對應於一個屏幕位置的地理位置。 相對於地圖左上角(而不是整個 屏幕的左上角),屏幕像素(不是顯示像素) 中指定了屏幕位置。

參數: point屏幕像素點上的點。

返回:對應於屏幕上的點的經緯度 或null如果射線 通過給定的屏幕點不相交地平面 (如果映射是嚴重傾斜,這可能是這種情況)。

+1

謝謝,這是完美的!這一直是我的錯,因爲我的代碼錯誤,通過錯誤的點座標! – JohnEisenheim