Android 有 2 个位置的点方向
Android point direction with 2 locations
我实际上正在 Android 上编写一个应用程序,我需要指出一个特定的方向,解释,我有一个固定的位置和我的智能手机的位置(经纬度中的两个)和我想用箭头指向两者之间的方向。所以我拼命搜索,我有一个完美工作的指南针,我试图通过改变 getRotationMatrix 东西获得的北方向来改变指向方向但是在失去我的大脑尝试之后我不知道该怎么做 xD 所以是的我需要一些想法和提示。
这是我的代码以防万一(我刚刚通过了 onSensorChanged 函数,剩下的只是基本的初始化)
@Override
public void onSensorChanged(SensorEvent event) {
if (event.sensor == mAccelerometer) {
System.arraycopy(event.values, 0, mLastAccelerometer, 0, event.values.length);
mLastAccelerometerSet = true;
} else if (event.sensor == mMagnetometer) {
System.arraycopy(event.values, 0, mLastMagnetometer, 0, event.values.length);
mLastMagnetometerSet = true;
}
if (mLastAccelerometerSet && mLastMagnetometerSet) {
SensorManager.getRotationMatrix(mR, null, mLastAccelerometer, mLastMagnetometer);
SensorManager.getOrientation(mR, mOrientation);
float azimuthInRadians = mOrientation[0];
float azimuthInDegress = (float)(Math.toDegrees(azimuthInRadians)+360)%360;
RotateAnimation ra = new RotateAnimation(
mCurrentDegree,
-azimuthInDegress,
Animation.RELATIVE_TO_SELF, 0.5f,
Animation.RELATIVE_TO_SELF,
0.5f);
ra.setDuration(250);
ra.setFillAfter(true);
mPointer.startAnimation(ra);
mCurrentDegree = -azimuthInDegress;
}
}
好的,我处理了一些事情。我选择了我的位置,固定位置和第三个位置,经度和纬度完全相同,纬度为 90。这样我就有了两个矢量,一个指向北方,一个在我们的位置和固定位置的直线上。我计算这些向量之间的角度,并将这个角度添加到旋转动画中。我认为我的解决方案不是那么好,但由于我在论坛上没有找到其他任何东西,我 post 一个答案 ^^。
我实际上正在 Android 上编写一个应用程序,我需要指出一个特定的方向,解释,我有一个固定的位置和我的智能手机的位置(经纬度中的两个)和我想用箭头指向两者之间的方向。所以我拼命搜索,我有一个完美工作的指南针,我试图通过改变 getRotationMatrix 东西获得的北方向来改变指向方向但是在失去我的大脑尝试之后我不知道该怎么做 xD 所以是的我需要一些想法和提示。
这是我的代码以防万一(我刚刚通过了 onSensorChanged 函数,剩下的只是基本的初始化)
@Override
public void onSensorChanged(SensorEvent event) {
if (event.sensor == mAccelerometer) {
System.arraycopy(event.values, 0, mLastAccelerometer, 0, event.values.length);
mLastAccelerometerSet = true;
} else if (event.sensor == mMagnetometer) {
System.arraycopy(event.values, 0, mLastMagnetometer, 0, event.values.length);
mLastMagnetometerSet = true;
}
if (mLastAccelerometerSet && mLastMagnetometerSet) {
SensorManager.getRotationMatrix(mR, null, mLastAccelerometer, mLastMagnetometer);
SensorManager.getOrientation(mR, mOrientation);
float azimuthInRadians = mOrientation[0];
float azimuthInDegress = (float)(Math.toDegrees(azimuthInRadians)+360)%360;
RotateAnimation ra = new RotateAnimation(
mCurrentDegree,
-azimuthInDegress,
Animation.RELATIVE_TO_SELF, 0.5f,
Animation.RELATIVE_TO_SELF,
0.5f);
ra.setDuration(250);
ra.setFillAfter(true);
mPointer.startAnimation(ra);
mCurrentDegree = -azimuthInDegress;
}
}
好的,我处理了一些事情。我选择了我的位置,固定位置和第三个位置,经度和纬度完全相同,纬度为 90。这样我就有了两个矢量,一个指向北方,一个在我们的位置和固定位置的直线上。我计算这些向量之间的角度,并将这个角度添加到旋转动画中。我认为我的解决方案不是那么好,但由于我在论坛上没有找到其他任何东西,我 post 一个答案 ^^。