varios trazar studio ruta marcadores mapview mapas mapa implementar google example como agregar android google-maps-api-2

trazar - ¿Cómo obtener el centro del mapa para los mapas de Android v2?



mapview android studio (6)

En Google Maps para Android v1 , MapView tenía un método conveniente: getMapCenter() . Ahora no puedo averiguar cómo obtener el centro del mapa con v2 de esta api. He examinado la documentación de la API, pero no se menciona dicha característica. Por favor avise.

Gracias igor


He encontrado dos maneras de hacer esto:

1) El más fácil, el primero es usar la propiedad de destino en el objeto CameraPosition del mapa

LatLng center = mMap.getCameraPosition().target;

2) El segundo está usando un objeto 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);

He comparado ambas respuestas:

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);


Puedes usar :

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


Si solo desea obtener la posición una vez (p. Ej., Después de que el usuario haya dejado de explorar el mapa), use 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); } });

o usando un Java 8 lambda:

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

Tenga en cuenta que el oyente registrado con setOnCameraChangeListener se llama muchas veces y, como indica la documentation :

Esto se puede llamar tan a menudo como una vez en cada fotograma y no debe realizar operaciones costosas.


Yo tuve el mismo problema. Parece que puedes obtener el centro de esta manera:

mMap.getCameraPosition().target

donde mMap es la instancia de GoogleMap de su actividad. Esto devolverá un objeto LatLng que básicamente representa el centro del mapa.

Tenga en cuenta que la clase GeoPoint ya no está disponible.

Según http://developer.android.com/reference/com/google/android/gms/maps/model/CameraPosition.html

el objetivo es "La ubicación a la que apunta la cámara". (Lo probé con el código de ejemplo y funcionó bien para mí)


mejor manera de usar cameraPosition

Java:

LatLng centerMap = googleMap.getCameraPosition().target;

kotlin

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


para obtener el centro del mapa utilicé el método onMapReady () en la actividad, luego 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); } }); }