如何获得V2 Android地图地图的中心?(How to get center of map fo

2019-07-05 12:06发布

在谷歌地图Android版V1,MapView类有一个方便的方法: getMapCenter() 现在我无法弄清楚如何获得地图中心,这个API第2版 。 我已经仔细阅读API文档,但没有这样的功能的提。 请指教。

谢谢,伊戈尔

Answer 1:

我有同样的问题。 看来你可以得到的中心是这样的:

mMap.getCameraPosition().target

其中MMAP是从活动的GoogleMap的实例。 这将返回一个经纬度对象,它基本上代表了地图的中心。

注意GeoPoint类不再可用。

据http://developer.android.com/reference/com/google/android/gms/maps/model/CameraPosition.html

目标是“相机所指向的位置。” (我用示例代码测试,它好工作对我来说)



Answer 2:

我发现这样做的两种方式:

1)最简单的,首先是使用Map的CameraPosition对象的目标属性

 LatLng center = mMap.getCameraPosition().target;

2)第二个是使用VisibleRegion对象:

VisibleRegion visibleRegion = mMap.getProjection()
                    .getVisibleRegion();

Point x = mMap.getProjection().toScreenLocation(
                    visibleRegion.farRight);

Point y = mMap.getProjection().toScreenLocation(
                    visibleRegion.nearLeft);

Point centerPoint = new Point(x.x / 2, y.y / 2);

LatLng centerFromPoint = mMap.getProjection().fromScreenLocation(
                    centerPoint);

我比较两个答案:

Log.d("MapFragment: ", "Center From camera: Long: " + center.longitude
                        + " Lat" + center.latitude);

Log.d("Punto x", "x:" + x.x + "y:" + x.y);
Log.d("Punto y", "y:" + y.x + "y:" + y.y);

Log.d("MapFragment: ", "Center From Point: Long: "
                    + centerFromPoint.longitude + " Lat"
                    + centerFromPoint.latitude);


Answer 3:

您可以使用 :

latlng=map.getProjection().getVisibleRegion().latLngBounds.getCenter();


Answer 4:

获得地图我用onMapReady()在活性的方法的中心,然后使用googleMap.setOnCameraChangeListener() method to get position of Came

@Override
public void onMapReady(GoogleMap googMap) {
    googleMap.setOnCameraChangeListener(new GoogleMap.OnCameraChangeListener() {
        @Override
        public void onCameraChange(CameraPosition cameraPosition) {

       Log.i("centerLat",cameraPosition.target.latitude);

       Log.i("centerLong",cameraPosition.target.longitude);

        }
    });
}


Answer 5:

如果你只想要得到的位置。 一旦 (例如,用户已经停止移动地图后),使用setOnCameraIdleListener

https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMap.OnCameraIdleListener

mMap.setOnCameraIdleListener(new GoogleMap.OnCameraIdleListener() {
    @Override
    public void onCameraIdle() {
        LatLng position = mMap.getCameraPosition().target;
        Log.d("MapActivity", "Position: " + position);
    }
});

或者使用Java 8拉姆达:

mMap.setOnCameraIdleListener(() -> {
    LatLng position = mMap.getCameraPosition().target;
    Log.d("MapActivity", "Position: " + position);
});

请注意,注册听众setOnCameraChangeListener多次调用,并作为文件指出:

这可以被称为每一帧经常一次,不应该执行耗时的操作。



Answer 6:

最好的方法使用cameraPosition

Java的:

LatLng centerMap = googleMap.getCameraPosition().target;

科特林:

googleMap?.cameraPosition?.target?.let {
    // it is LatLng center
}


文章来源: How to get center of map for v2 android maps?