Cuando se muestra mi mapa, siempre comienza en una ubicación fija (cerca de África).
Luego, uso el siguiente código para centrar el mapa en la ubicación que quiero.
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(loc.getLatitude(), loc.getLongitude()), 14.0f));
Mi pregunta es: ¿podría establecer una ubicación y un nivel de zoom predeterminados antes de que se muestre el mapa?
Porque no quiero que mis usuarios vean la animación al principio.
Gracias.
android
google-maps
google-maps-api-3
dong221
fuente
fuente

moveCameraes la mejor solución para estoRespuestas:
puede usar esto para hacer zoom directamente sin la animación:
map.moveCamera( CameraUpdateFactory.newLatLngZoom(new LatLng(xxxx,xxxx) , 14.0f) );fuente
MyLocationpara poder mover y acercar el mapa a la ubicación del usuario. Dado que el mapa se inicializa en XML, no puedo averiguar cómo evitar que ocurra el salto. Idealmente, escondería el mapa hasta queMyLocationse encuentre y luego lo muestre.Eche un vistazo a la documentación aquí:
https://developers.google.com/maps/documentation/android-api/map#configure_initial_state
La forma de hacerlo es ligeramente diferente dependiendo de si está agregando el mapa a través de XML o mediante programación. Si está utilizando XML, puede hacerlo de la siguiente manera:
<fragment xmlns:android="http://schemas.android.com/apk/res/android" xmlns:map="http://schemas.android.com/apk/res-auto" android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" class="com.google.android.gms.maps.SupportMapFragment" map:cameraBearing="112.5" map:cameraTargetLat="-33.796923" map:cameraTargetLng="150.922433" map:cameraTilt="30" map:cameraZoom="13"/>Si lo está haciendo mediante programación, puede hacer lo siguiente:
CameraPosition cameraPosition = new CameraPosition.Builder() .target(new LatLng(-33, 150)) .zoom(13) .build(); MapFragment.newInstance(new GoogleMapOptions() .camera(camera));fuente
Unexpected namespace prefix "map" found for tag fragmentEn caso de que desee cargar
Google Mapen cualquier momento inicial medianteLocationprogramación, puede usar este fragmento de código,FragmentManager fm = getFragmentManager(); // getChildFragmentManager inside fragments. CameraPosition cp = new CameraPosition.Builder() .target(initialLatLng) // your initial co-ordinates here. like, LatLng initialLatLng .zoom(zoom_level) .build(); SupportMapFragment mapFragment = SupportMapFragment.newInstance(new GoogleMapOptions().camera(cp)); fm.beginTransaction().replace(R.id.rl_map, mapFragment).commit();Agregue este fragmento de código para
layout<RelativeLayout android:id="@+id/rl_map" android:layout_width="fill_parent" android:layout_height="fill_parent" />Esto se cargará
GoogleMapen particularLocationdirectamente, es decir, initialLatLng.fuente
He creado un identificador para
SupportMapFragmenty establecer suvisibilityaView.INVISIBLEutilizarSupportMapFragment.getView().setVisibility(). Luego, en laonLocationChangeddevolución de llamada que implementa mi clase, verifico siINVISIBLEy configuroVISIBLEsi es verdadero. Esto elimina los saltos que ve con carga y le permite inicializar dinámicamente la posición inicial. En mi caso, estoy centrando la cámara alrededor de la ubicación del usuario, por lo queonLocationChangedse llama inmediatamente debido asetMyLocationEnabled(true).Sus requisitos pueden ser diferentes, pero de cualquier manera solo necesita configurar la visibilidad
INVISIBLEy luego encontrar un buen lugar para configurarVISIBLEdespués de que se hayan cargado los datos apropiados.fuente
puedes usar CameraUpdate directamente usando static latlong
LatLong latlong = new LatLong(lat, long); CameraUpdate cameraPosition = CameraUpdateFactory.newLatLngZoom(latLong, 15); mGoogleMap.moveCamera(cameraPosition); mGoogleMap.animateCamera(cameraPosition);fuente