Android:从像素坐标获取纬度/经度

时间:2015-10-11 14:54:03

标签: android google-maps

我目前正在开发一个在地图上“模拟”鼠标(带指针)的Android应用程序。我已经实现了pad,它可以在地图图层上移动指针(一个简单的小视图)。现在我需要创建addMarker功能。我所拥有的是:

  • (x,y)指针的坐标(以像素为单位)(也可以是倾角);
  • 宽度和高度贴图属性。

我的问题是:如何计算指针触摸的点的纬度/经度?非常感谢!

1 个答案:

答案 0 :(得分:1)

你可以这样做:

Projection myProjection = myMap.getProjection()

获取地图的投影:https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMap.html#getProjection()

  

返回可用于在屏幕之间进行转换的Projection对象   坐标和纬度/经度坐标。

     

返回的投影是当前投影的快照,并且   相机移动时不会自动更新。作为这个操作   价格昂贵,每个屏幕只能投影一次。   Google地图使用墨卡托投影从中创建地图   地理数据并将地图上的点转换为地理数据   坐标。

然后:

LatLng markerPosition = myProjection.fromScreenLocation(pointerPosition);

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

  

返回与屏幕位置对应的地理位置。   屏幕位置以屏幕像素(不是显示像素)指定   相对于地图的左上角(不是整个的左上角)   屏幕)。

     

参数:      以屏幕像素为单位指向屏幕上的点。

     

返回:   LatLng对应于屏幕上的点,如果是光线则为null   通过给定的屏幕点不与地平面相交   (如果地图严重倾斜,可能就是这种情况。)