相关疑难解决方法(0)

像指南针一样旋转ImageView(在其他地方设置"北极")

我对如何实施"个人指南针"感到困惑,即指向特定方位而不是标准"北极"的指南针...不幸的是,我目前的尝试出错了(不指向给定方位).它还与加速器连接,能够根据用户转向的方式动态调整自身.

这是我目前的尝试(onSensorChanged()更新箭头的方法):

public void onSensorChanged( SensorEvent event ) {

            // If we don't have a Location, we break out
            if ( LocationObj == null ) return;

            float azimuth = event.values[0];
                            float baseAzimuth = azimuth;

            GeomagneticField geoField = new GeomagneticField( Double
                    .valueOf( LocationObj.getLatitude() ).floatValue(), Double
                    .valueOf( LocationObj.getLongitude() ).floatValue(),
                    Double.valueOf( LocationObj.getAltitude() ).floatValue(),
                    System.currentTimeMillis() );
            azimuth += geoField.getDeclination(); // converts magnetic north into true north

            //Correct the azimuth
            azimuth = azimuth % 360;

            //This is where we choose to point it …
Run Code Online (Sandbox Code Playgroud)

gps android rotation android-imageview

35
推荐指数
1
解决办法
2万
查看次数

Java,将lat/lon转换为UTM

有没有人知道在Java中将地球表面位置从lat,lon转换为UTM(比如WGS84)?我目前正在研究Geotools,但遗憾的是解决方案并不明显.

java geography geolocation latitude-longitude geotools

24
推荐指数
3
解决办法
5万
查看次数

android地图自动旋转

如果您打开Goog​​le地图应用,则屏幕右上角会显示一个按钮,您可以按此按钮将地图置于当前位置的中心位置.然后按钮的图标会发生变化.如果再次按相同按钮,地图将根据指南针标题自动旋转.换句话说,地图变得以自我为中心(与分配中心AKA北方总是向上)相反.

Google最近推出了适用于Android的地图API V2,我当然比旧版更喜欢它.默认情况下,android maps V2将包含"center on location"按钮.但是,多次按下它不会启用自动旋转; 它只是试图将地图再次置于您的位置.

有没有人知道如何使用地图API v2自动旋转地图就像谷歌地图应用程序一样?我是否必须自己实现此功能,或者它是否在API中,我只是没有看到它?我感谢所有的帮助.

android google-maps autorotate

21
推荐指数
2
解决办法
3万
查看次数

在android中正确计算真实标题

我的要求是像Google maps apps罗盘模式一样(点击时可以看到演示current location button twice):

  • 在此compass模式下,地图始终旋转一个角度,以便bluedot arrow始终指向顶部屏幕.

但我不知道如何计算正确的bearing距离azimuth, pitch, roll值.

public void onSensorChanged(SensorEvent sensorEvent) {
        switch (sensorEvent.sensor.getType()) {
            case Sensor.TYPE_ACCELEROMETER:
                System.arraycopy(sensorEvent.values, 0, mAccelerometers, 0, 3);
                break;
            case Sensor.TYPE_MAGNETIC_FIELD:
                System.arraycopy(sensorEvent.values, 0, mMagnetometers, 0, 3);
                break;
            default:
                break;
        }
        float[] rotationMatrix = new float[9];
        boolean success =
                    SensorManager.getRotationMatrix(rotationMatrix, null, mAccelerometers, mMagnetometers);
         if (success) {
             SensorManager.getOrientation(rotationMatrix, mOrientation);
             float azimuth = Math.toDegrees(mOrientation[0]);
             float pitch = Math.toDegrees(mOrientation[1]);
             float roll = Math.toDegrees(mOrientation[2]);
         } …
Run Code Online (Sandbox Code Playgroud)

android google-maps android-sensors

12
推荐指数
1
解决办法
1600
查看次数

Android Compass指向我的位置而不是北

我正在开发指南针应用程序,我希望指南针指向特定的纬度经度位置,而不是通常的北方.我发现了一些问题,与我的问题,但我不管理,使他们为我工作.这是我的代码:

public class MainActivity extends AppCompatActivity implements SensorEventListener {
    private ImageView image;
    private float currentDegree = 0f;
    private SensorManager mSensorManager;
    private TextView tvHeading;
    private Location location = new Location("A");
    private Location target = new Location("B");
    private LocationManager locationManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        image = (ImageView) findViewById(R.id.imageViewCompass);
        tvHeading = (TextView) findViewById(R.id.tvHeading);

        mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);

        location.setLatitude(54.903535);
        location.setLongitude(23.979342);

        target.setLatitude(54.904618);
        target.setLongitude(23.978782);
    }

    @Override
    protected void onResume() {
        super.onResume();

        mSensorManager.registerListener(this, mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),
                SensorManager.SENSOR_DELAY_GAME);
    }

    @Override
    protected void onPause() { …
Run Code Online (Sandbox Code Playgroud)

android location compass-geolocation

11
推荐指数
1
解决办法
2106
查看次数

旋转Google-Map以显示我的实时方向

我正在使用Google Maps Android API v2,我在地图上将我的设备位置显示为GoogleMap Marker.我有一个监听器(LocationServices.FusedLocationApi.requestLocationUpdates ...)附加到Map,以处理每个GPS位置的变化.每当我收到一个新位置时,我都会更新Marker(我的位置)以及地图上的Camera,几乎就像我开车时一样.

但是......我需要一些帮助才能使MAP 旋转和/或显示在我要移动的方向上.我的意思是,当我开车时,我需要旋转MAP,我可以在地图左侧看到我在现实生活中的左侧,所以右侧也是如此.由于MAP方向是静态的,Marker(Me)正在移动它,但大多数时候方向与我的汽车实时方向不匹配.

我应该怎么做地图才能实现这种视觉效果?

android google-maps

11
推荐指数
1
解决办法
1万
查看次数

Android中的Qibla指南针

我已经尝试了很多,但不能为我的应用程序制作Qibla指南针.我无法理解我的所作所为.我需要能够完美运行的Qibla指南针.

android compass-geolocation

6
推荐指数
1
解决办法
7876
查看次数

旋转ImageView以面向纬度和经度的给定位置

我正在尝试编程我的应用程序,所以我的箭头ImageView将指向给定的android.Location.现在它没有指向正确的方向.由于某种原因它很漂亮.我认为这是因为我没有考虑到我正确面对的方向.

这是我目前正在做的事情:

float angle = GetAngle(myLocation);
RotateAnimation anim = new RotateAnimation(0.0f, angle, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
anim.setInterpolator(new LinearInterpolator());
anim.setRepeatCount(0);
anim.setDuration(2);
anim.setFillAfter(true);
arrow.startAnimation(anim);
Run Code Online (Sandbox Code Playgroud)

这是GetAngle()函数:

float GetAngle(Location myLocation)
{
    float angle = (float) Math.toDegrees(Math.atan2(theirLocation.getLatitude() - myLocation.getLatitude(), theirLocation.getLongitude() - myLocation.getLongitude()));
    if (angle < 0)
        angle += 360;
    return angle;
}
Run Code Online (Sandbox Code Playgroud)

有没有比我更好的方法呢?我不知道如何让ImageView面向我从一个位置给出的坐标.

java android location geolocation

5
推荐指数
1
解决办法
202
查看次数

为什么要加上磁偏角?

android.hardware.GeomagneticField 类有一个 getDeclination 方法,我们可以用它来找到真北。我在 StackOverFlow 和其他站点上看到的所有示例都将此值添加到磁北以找到真正的北,如下所示:

True north = Magnetic North + Declination

但是这个问题中的一个帖子表明这可能是错误的: 使用方向传感器指向特定位置

不幸的是,没有人对该帖子发表评论或投票。

Android 文档说,正值“意味着磁场从真北向东旋转了那么多”。而这个页面有几个数字,显示了相同的:“积极赤纬-磁北在真北的东”。换句话说,赤纬定义如下:

Declination = Magnetic north - True North

重新排列以根据磁北找到真北:

True north = Magnetic north - Declination

那么,增加或减少偏角是否正确如果添加它是正确的,为什么?

android

4
推荐指数
1
解决办法
1403
查看次数