Tourner marqueur conformément à l'instruction de l'utilisateur sur Google Maps V2 Android
Que je veux faire tourner marqueur par palier ou de la valeur de la sonde reçu de l'Accéléromètre pour indiquer à l'utilisateur où, en fait, il est en mouvement. J'ai mis l'icône des repères et de la télévision de la valeur à true mais sa ne fonctionne pas comme nécessaire.
mCurrentLocationMarker.position(new LatLng(
LocationUtils.sLatitude, LocationUtils.sLongitude));
mCurrentLocationMarker.icon(icon);
mCurrentLocationMarker.flat(true);
mCurrentLocationMarker.rotation(LocationUtils.sBearing);
if (currentMarker != null) {
currentMarker.setPosition(new LatLng(
LocationUtils.sLatitude,
LocationUtils.sLongitude));
} else {
currentMarker = mGoogleMap
.addMarker(mCurrentLocationMarker);
}
animateCameraTo(true);
J'ai utilisé cette comme marqueur.
Je ne sais pas pourquoi sa ne pas tourner comme par l'utilisateur de la direction. Si quelqu'un a une idée merci de m'aider où je fais erreur.
LocationUtils.sBearing est la valeur de Roulement que j'ai reçu de onLocationChanged ou l'accéléromètre.
, Fondamentalement, je veux faire mon marqueur de même que google maps marqueur qui montre à l'utilisateur dans quelle direction ils sont en mouvement ou en rotation.
OriginalL'auteur Scorpion | 2013-12-20
Vous devez vous connecter pour publier un commentaire.
C'est une vieille question et il semble que l'API a changé depuis.
Je suis en supposant que vous êtes en mesure d'obtenir les dispositifs portant. Si ce n'est pas ici est un pratique tutoriel.
Première chose est de créer un repère, nous pouvons les utiliser pour porter des mises à jour.
Note le
.flat(true)
partie. La garantie de notre marqueur est nord aligné afin que nos roulements fonctionnera correctement même si l'utilisateur fait pivoter la carte.Maintenant, quand vous obtenez votre cap mises à jour que vous pouvez faire ce qui suit
Cela suppose que votre icône de marque a le sens de la marche du haut. Si votre marqueur est tourné comme celui sur la photo, vous aurez à régler le roulement pour compenser avant de le mettre sur le marqueur. Juste un simple
setRotation(bearing - 45)
devrait le faire.if (mLastLocation.hasBearing()) {marker.setRotation(bearing); }
droit ?si c'est où vous êtes l'obtention de votre cap à partir, assurez-vous
OriginalL'auteur Breavyn
Im poster cette réponse parce que les gens comme moi qui sont à la recherche d'une solution liée à la question ci-dessus pourrait trouver utile.
Alors, voici comment je l'ai fait.
@Colin a dit: vous devez activer
.flat(true)
pour faire pivoter les marqueurs.1.Pour l'angle d'azimut, j'ai utilisé le code suivant.
Ici latLng1 - mon ancien emplacement && latLng2 - mon nouveau lieu de
2.Pour faire pivoter le marqueur ci-dessus en utilisant angle d'azimut, j'ai utilisé ce code
Ici
isMarkerRotating
est une valeur booléenne. AjouterisMarkerRotating = false
dansOnCreate
méthode3.à l'aide de code ci-dessus
OriginalL'auteur satti8893
Dans Kotlin en utilisant Google SphericalUtil classe, nous pouvons obtenir de roulement en passant par la source et la destination LatLngs comme:
Alors cette suite de "roulement" pour le marqueur comme
Référence: https://developers.google.com/maps/documentation/android-sdk/utility/#spherical
OriginalL'auteur Shylendra Madda