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
moveCamera
es 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
MyLocation
para 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 queMyLocation
se 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 fragment
En caso de que desee cargar
Google Map
en cualquier momento inicial medianteLocation
programació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á
GoogleMap
en particularLocation
directamente, es decir, initialLatLng.fuente
He creado un identificador para
SupportMapFragment
y establecer suvisibility
aView.INVISIBLE
utilizarSupportMapFragment.getView().setVisibility()
. Luego, en laonLocationChanged
devolución de llamada que implementa mi clase, verifico siINVISIBLE
y configuroVISIBLE
si 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 queonLocationChanged
se llama inmediatamente debido asetMyLocationEnabled(true)
.Sus requisitos pueden ser diferentes, pero de cualquier manera solo necesita configurar la visibilidad
INVISIBLE
y luego encontrar un buen lugar para configurarVISIBLE
despué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