谷歌地图,获得中心不在中心。 Android的

时间:2016-09-14 11:52:52

标签: java android google-maps maps

我有一个问题,当我试图获得地图的中心时,它与屏幕的中心不同,并且在不同的设备中存在不同的距离差异。我怎样才能获得地图的真实中心?我需要在其中添加一个标记

谢谢

部分XML代码:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical">

    <fragment
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/map" tools:context=".MapsActivity"
        android:name="com.google.android.gms.maps.SupportMapFragment" />

    <ImageView

        android:layout_width="64dp"
        android:layout_height="64dp"
        android:id="@+id/crosshair"
        android:src="@drawable/crosshair"
        android:onClick="btPontoClick"
        android:layout_centerInParent="true"/>

    </RelativeLayout>

获得中心的Java代码:

public void btPontoClick(View v){
    LatLng latlng =  mMap.getCameraPosition().target;
    addPonto(latlng);
    okParaVoltar = false;
}

2 个答案:

答案 0 :(得分:1)

目标取决于相机的方位和旋转。 最好的方法是获取地图“中心”的屏幕点,然后通过执行以下操作将其转换为地图点:

myMap.getProjection().fromScreenLocation(screenPoint);

https://developers.google.com/android/reference/com/google/android/gms/maps/Projection

注意:

  

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

答案 1 :(得分:0)

我以不同的方式解决了这个问题。

现在我将Im​​ageView屏幕中的位置(X,Y)转换为LatLng到谷歌地图!

谢谢大家