gpt4 book ai didi

android - 根据 Google Maps V2 Android 上的用户方向旋转标记

转载 作者:IT老高 更新时间:2023-10-28 23:21:04 24 4
gpt4 key购买 nike

我想根据从加速度计接收到的方位或传感器值旋转标记,以向用户显示他实际移动的位置。我已将标记图标和平面值设置为 true,但它没有按要求工作。

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);

我用过这个marker作为标记。

我不知道为什么它没有按照用户的方向旋转。如果有人有任何想法,请帮助我在哪里犯错。

LocationUtils.sBearing 是我从 onLocationChanged 或加速度计接收到的轴承值。

基本上我想让我的标记与谷歌地图标记相同,它会向用户显示他们正在移动或转向的方向。

最佳答案

这是一个老问题,从那时起 API 似乎发生了变化。

我假设您能够获得设备轴承。如果不是这里是 handy tutorial .

首先是创建一个我们可以用于轴承更新的标记。

private Marker marker;

// Create this marker only once; probably in your onMapReady() method
marker = mGoogleMap.addMarker(new MarkerOptions()
.position(new LatLng(myLatitude, myLongitude))
.flat(true));

注意 .flat(true) 部分。确保我们的标记北对齐,这样即使用户旋转 map ,我们的方位也能正常工作。

现在,当您获得轴承更新时,您可以执行以下操作

marker.setRotation(bearing);
// or if following the linked tutorial
// marker.setRotation((float) azimuth);

这假设您的标记图标在顶部具有向前的方向。如果您的标记像图示那样旋转,则必须先调整方位以进行补偿,然后再将其设置到标记上。只需一个简单的 setRotation(bearing - 45) 即可。

关于android - 根据 Google Maps V2 Android 上的用户方向旋转标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20704834/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com