Lorsque ma carte est affichée, elle commence toujours à un endroit fixe (près de l’Afrique).
Ensuite, j’utilise le code suivant pour centrer la carte sur l’emplacement de mon choix.
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(loc.getLatitude(), loc.getLongitude()), 14.0f));
Ma question est la suivante: pourrais-je définir un emplacement et un niveau de zoom par défaut avant l'affichage de la carte?
Parce que je ne veux pas que mes utilisateurs voient l'animation au début.
Merci.
vous pouvez l'utiliser pour zoomer directement sans l'animation:
map.moveCamera( CameraUpdateFactory.newLatLngZoom(new LatLng(xxxx,xxxx) , 14.0f) );
Jetez un coup d'œil à la documentation ici:
https://developers.google.com/maps/documentation/Android-api/map#configure_initial_state
La façon de le faire est légèrement différente selon que vous ajoutez la carte via XML ou par programme. Si vous utilisez XML, vous pouvez le faire comme suit:
<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 vous le faites par programme, vous pouvez effectuer les opérations suivantes:
CameraPosition cameraPosition = new CameraPosition.Builder()
.target(new LatLng(-33, 150))
.zoom(13)
.build();
MapFragment.newInstance(new GoogleMapOptions()
.camera(camera));
Juste au cas où vous voudriez charger Google Map
à tout début Location
par programme, vous pouvez utiliser ce morceau de code,
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();
Ajoutez ce morceau de code pour layout
<RelativeLayout
Android:id="@+id/rl_map"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent" />
Ceci chargera GoogleMap
en particulier Location
directement, c'est-à-dire, initialLatLng.
J'ai créé un descripteur sur SupportMapFragment
et lui ai attribué le visibility
sur View.INVISIBLE
À l'aide de SupportMapFragment.getView().setVisibility()
. Ensuite, dans le callback onLocationChanged
que ma classe implémente, je vérifie si INVISIBLE
et lui attribue la valeur VISIBLE
si la valeur est true. Cela supprime le saut que vous voyez en charge tout en vous permettant d'initialiser dynamiquement la position de départ. Dans mon cas, je centre la caméra autour de l'emplacement de l'utilisateur, donc onLocationChanged
est appelé immédiatement à cause de setMyLocationEnabled(true)
.
Vos exigences peuvent être différentes, mais dans tous les cas, vous devez simplement définir la visibilité sur INVISIBLE
, puis trouver un bon emplacement pour définir VISIBLE
après le chargement des données appropriées.
vous pouvez utiliser directement CameraUpdate en utilisant latlong statique
LatLong latlong = new LatLong(lat, long);
CameraUpdate cameraPosition = CameraUpdateFactory.newLatLngZoom(latLong, 15);
mGoogleMap.moveCamera(cameraPosition);
mGoogleMap.animateCamera(cameraPosition);