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?
3 Réponses :
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);
ne fonctionne pas, et le facteur de zoom n'est pas pris en compte
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));
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);
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.