gpt4 book ai didi

android - 检查用户是否在给定位置的方向上行驶

转载 作者:行者123 更新时间:2023-11-30 03:33:33 27 4
gpt4 key购买 nike

我希望能够在 Android 上确定用户是朝着给定位置的方向行进还是远离它。我从一项服务收到定期的位置更新,并且想知道如何解决这个问题,因为我在考虑它时似乎在画空白。我正在使用 fusedlocation 提供程序进行位置更新。

基本场景:

位置 L1,位置 L2用户位置会定期更新一旦用户在 L1 范围内,只通知用户一次如果用户现在正朝着 L2 前进,那很好如果不通知用户他们走错了方向

代码 fragment

在位置变化时广播新位置的 Intent

@Override
public void onLocationChanged(Location location) {

Intent i = new Intent();
i.setAction(NavigationAnimatorActivity.INTENT_ACTION);
i.putExtra(LocationClient.KEY_LOCATION_CHANGED, location);

Log.v(getClass().getSimpleName(),
i.getExtras().get(LocationClient.KEY_LOCATION_CHANGED)
.toString());

// Broadcast the intent carrying the data

sendBroadcast(i);

}

处理位置数据

class ReceiveLocationUpdate extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub

String action = intent.getAction();

// send message to activity

Bundle b = null;

// Check we have a bundle
if ((b = intent.getExtras()) != null) {
// Check if we have location data
if (action.equalsIgnoreCase(INTENT_ACTION)) {

Object o = b.get(LocationClient.KEY_LOCATION_CHANGED);
Log.v(getClass().getName(), o.toString());
if (o != null && o instanceof Location) {
mCurrentLocation = (Location) o;
checkIfAtLocation(mCurrentLocation);
}
}

}

}

}

检查我们是否在需要通知用户的位置附近

private void checkIfAtLocation(Location currLocation) {

Location L1 = s.asLocation();
Location L2; // Next waypoint

// Check if we're within range of a waypoint, notifying user if we are
if (mCurrentLocation.distanceTo(L1)) <= RADIUS) {

// Notify Once

// How do I check that user is travelling towards L2?
}
}

谢谢

最佳答案

计算用户是否正在接近一个点:使用 Location.distanceTo() 方法:传入当前经纬度和目的地纬度/经度,并存储该距离;

过一会儿再做同样的事情,比较现在的距离是否小于旧的距离。
如果距离更小,则接近目的地,如果距离更大,则移开。
如果距离 < 50m,他已经到达目的地。

关于android - 检查用户是否在给定位置的方向上行驶,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17008793/

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