92 votes

Comment puis-je définir l'emplacement par défaut et le niveau de zoom pour l'api google map v2 ?

Lorsque ma carte s'affiche, elle commence toujours à un endroit fixe (près de l'Afrique).

Ensuite, j'utilise le code suivant pour centrer la carte à l'endroit que je souhaite.

mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(loc.getLatitude(), loc.getLongitude()), 14.0f));

Ma question est la suivante : puis-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.

178voto

Saksak Points 1100

Vous pouvez l'utiliser pour zoomer directement sans l'animation :

map.moveCamera( CameraUpdateFactory.newLatLngZoom(new LatLng(xxxx,xxxx) , 14.0f) );

91voto

Anthony Points 996

Jetez un coup d'œil à la documentation ici :

https://developers.google.com/maps/documentation/Android-api/map#configure_initial_state

La façon de procéder est légèrement différente selon que vous ajoutez la carte par XML ou par programme. Si vous utilisez le XML, vous pouvez procéder 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 de manière programmatique, vous pouvez procéder comme suit :

CameraPosition cameraPosition = new CameraPosition.Builder()
    .target(new LatLng(-33, 150))
    .zoom(13)
    .build();
MapFragment.newInstance(new GoogleMapOptions()
    .camera(camera));

6voto

Jaydipsinh Zala Points 16288

Au cas où vous voudriez charger Google Map à tout moment Location de manière programmatique, vous pouvez utiliser ce bout 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.

3voto

mattblang Points 1229

J'ai créé une poignée pour SupportMapFragment et définir son visibility a View.INVISIBLE en utilisant SupportMapFragment.getView().setVisibility() . Ensuite, dans le onLocationChanged que ma classe implémente, je vérifie si INVISIBLE et réglé sur VISIBLE si elle est vraie. Cela permet de se débarrasser des sauts que vous voyez au chargement 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 en raison de setMyLocationEnabled(true) .

Vos besoins peuvent être différents, mais dans tous les cas, il vous suffit de définir la visibilité à INVISIBLE et ensuite trouver un bon endroit pour mettre VISIBLE après que vos données appropriées aient été chargées.

2voto

Mahesh Gawhane Points 279

Vous pouvez utiliser directement CameraUpdate en utilisant static latlong

 LatLong latlong = new LatLong(lat, long);
 CameraUpdate cameraPosition = CameraUpdateFactory.newLatLngZoom(latLong, 15);
                mGoogleMap.moveCamera(cameraPosition);
                mGoogleMap.animateCamera(cameraPosition);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X