2
votes

La carte Google n'est pas centrée à l'emplacement souhaité

Je travaille avec Google Maps dans une application Android.

Je dois centrer la carte sur la position actuelle de l'appareil.

J'utilise le code suivant pour le faire: p>

spots en home latitud 41.6352103

spots en home longitud 2.1633905

Pour le moment, la carte montre le marqueur de position actuelle, mais pas centré sur l'écran.

J'obtiens la latitude et la longitude de la position actuelle à partir des préférences partagées.

Les deux valeurs sont correctes et vérifiées dans la sortie du journal:

String latitud_usuario = prefs.getString("latitud", "");
String longitud_usuario = prefs.getString("longitud", "");
String username = prefs.getString("username", "");
Log.d("JSON", "spots en home latitud " + latitud_usuario);
Log.d("JSON", "spots en home longitud " + longitud_usuario);
Log.d("JSON", "spots en home username " + username);
LatLng miPosition = new LatLng(Double.parseDouble(latitud_usuario), Double.parseDouble(longitud_usuario));

googleMap.setMapStyle(MapStyleOptions.loadRawResourceStyle(getContext(), R.raw.map_style));
googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
change_map_satelite.setVisibility(View.VISIBLE);
change_map_normal.setVisibility(View.GONE);
Marker yo = googleMap.addMarker(new MarkerOptions()
    .position(miPosition)
    .title(username)
);
yo.setTag(username);
googleMap.moveCamera(CameraUpdateFactory.newLatLng(miPosition));
CameraUpdate zoom = CameraUpdateFactory.zoomTo(15);
googleMap.animateCamera(zoom);

Le centre de l'écran de la carte n'est pas loin de l'emplacement souhaité, à environ 10 km au nord depuis l'emplacement souhaité.

Qu'est-ce que je fais mal?


0 commentaires

3 Réponses :


1
votes

Déplacer au centre comme ci-dessous

Projection projection = googleMap.getProjection();
    LatLng markerPosition = marker.getPosition();
    Point markerPoint = projection.toScreenLocation(markerPosition);
    Point targetPoint = new Point(markerPoint.x, markerPoint.y - view.getHeight() / 2);
    LatLng targetPosition = projection.fromScreenLocation(targetPoint);
    googleMap.animateCamera(CameraUpdateFactory.newLatLng(targetPosition), 1000, null);


1 commentaires

ne fonctionne pas, et le facteur de zoom n'est pas pris en compte



2
votes

Je pense que si l'emplacement est valide, il suffit d'utiliser une caméra animée:

CameraPosition cameraPosition = new CameraPosition.Builder()
                        .target(miPosition).zoom(15).build();
googleMap.animateCamera(CameraUpdateFactory
                        .newCameraPosition(cameraPosition));


0 commentaires

1
votes

Utilisez la caméra de déplacement comme ci-dessous à la fois position et le niveau zoom sur une ligne. Dans votre cas, vous devez d'abord déplacer la caméra vers l'emplacement du marqueur, mais encore une fois, vous devez animer avec le zoom. alors la position du marqueur peut changer selon votre expérience. utilisez-le comme ci-dessous.

googleMap.animateCamera(update);

Ensuite, vous pouvez utiliser ceci pour déplacer

googleMap.moveCamera(update);

ou ceci vers animer

CameraUpdate update = CameraUpdateFactory.newLatLngZoom(miPosition, 15);


2 commentaires

merci, cela fonctionne en changeant CameraUpdateFactory.newLatLngZoom (new LatLng (miPosition), 15) avec CameraUpdateFactory.newLatLngZoom (miPosition, 15)


vous êtes les bienvenus et merci .. J'ai mis à jour la réponse.