当前位置: 首页 > 知识库问答 >
问题:

我无法访问我所在位置的经纬度。为什么?

杜晨朗
2023-03-14

我想计算两个点之间的距离,但是当我使用函数时,程序有错误,并说android.location.位置与同一文件中定义的类型冲突。我通过数学规则计算距离,但是当我给出我的位置的纬度和经度时,当程序运行时,程序已经停止。为什么?我很困惑。

public class Location extends MapActivity {
double myLatitude=0;
double myLongitude=0;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.location);

    initMapView();
    initMyLocation();
    }
    private void initMyLocation() {
    final MyLocationOverlay overlay = new MyLocationOverlay(this, map);
    overlay.enableMyLocation();
    overlay.enableCompass(); 
    //
    mylocation=overlay.getMyLocation();
    overlay.runOnFirstFix(new Runnable() {
        public void run() {
            controller.setZoom(13);
            controller.animateTo(overlay.getMyLocation());
        }
    });

            //THIS is ERROR . WHY?
    myLatitude=(overlay.getMyLocation().getLatitudeE6())/1e6;
    myLongitude=(overlay.getMyLocation().getLongitudeE6())/1e6;
}
}

日志猫:

11-12 15:29:57.974: W/dalvikvm(688): threadid=1: thread exiting with uncaught exception (group=0x40a891f8)
11-12 15:29:57.982: E/AndroidRuntime(688): FATAL EXCEPTION: main
11-12 15:29:57.982: E/AndroidRuntime(688): java.lang.RuntimeException: Unable to start activity ComponentInfo{org.example.loyaltier/org.example.loyaltier.Location}: java.lang.NullPointerException
11-12 15:29:57.982: E/AndroidRuntime(688):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955)
11-12 15:29:57.982: E/AndroidRuntime(688):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
11-12 15:29:57.982: E/AndroidRuntime(688):  at android.app.ActivityThread.access$600(ActivityThread.java:122)
11-12 15:29:57.982: E/AndroidRuntime(688):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
11-12 15:29:57.982: E/AndroidRuntime(688):  at android.os.Handler.dispatchMessage(Handler.java:99)
11-12 15:29:57.982: E/AndroidRuntime(688):  at android.os.Looper.loop(Looper.java:137)
11-12 15:29:57.982: E/AndroidRuntime(688):  at android.app.ActivityThread.main(ActivityThread.java:4340)
11-12 15:29:57.982: E/AndroidRuntime(688):  at java.lang.reflect.Method.invokeNative(Native Method)
11-12 15:29:57.982: E/AndroidRuntime(688):  at java.lang.reflect.Method.invoke(Method.java:511)
11-12 15:29:57.982: E/AndroidRuntime(688):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
11-12 15:29:57.982: E/AndroidRuntime(688):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
11-12 15:29:57.982: E/AndroidRuntime(688):  at dalvik.system.NativeStart.main(Native Method)
11-12 15:29:57.982: E/AndroidRuntime(688): Caused by: java.lang.NullPointerException
11-12 15:29:57.982: E/AndroidRuntime(688):  at org.example.loyaltier.Location.initMyLocation(Location.java:164)
11-12 15:29:57.982: E/AndroidRuntime(688):  at org.example.loyaltier.Location.onCreate(Location.java:61)
11-12 15:29:57.982: E/AndroidRuntime(688):  at android.app.Activity.performCreate(Activity.java:4465)
11-12 15:29:57.982: E/AndroidRuntime(688):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
11-12 15:29:57.982: E/AndroidRuntime(688):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
11-12 15:29:57.982: E/AndroidRuntime(688):  ... 11 more

谢谢干杯

共有2个答案

郏瀚
2023-03-14

已经有一个名为Location的类。

将其重命名为MyLocation或其他方法可以解决此问题。

欧阳鸿哲
2023-03-14

您的位置为空,请使用下面的代码

 if(mylocation!= null) 
{
      myLatitude=(overlay.getMyLocation().getLatitudeE6())/1e6;
    myLongitude=(overlay.getMyLocation().getLongitudeE6())/1e6;
}
 类似资料:
  • 我可以找到当前位置的经纬度,但是这些数据在改变我的当前位置之前是不显示的,我想在不改变我的位置的情况下得到当前位置的经纬度。 因为这段代码从onLocationChanged(Location loc)方法返回数据,所以在安装到我的设备上之后,如果不改变我的位置,我就无法获得数据。但是我需要纬度,经度,而不改变我的位置。这可能吗?请给出一个解决方案

  • 我有一个应用程序,显示GPS经度和纬度。如果我使用locationmanager.network_provider,它就可以工作,它会显示网络的经度和纬度。但是当我使用locationmanager.gps_provider时,它不会显示任何内容。但当我使用谷歌地图时,它可以指出我在哪里。谷歌地图做什么来获取我的位置?我需要得到我的设备的经纬度。 这是我的代码 我的清单文件

  • 注意——这个问题基于在Windows 7上观察到的行为。我相信这种行为适用于Vista以后的所有其他版本。根据MC ND的回答和Foxidrive的评论,它不适用于XP。 有人知道这个机制是如何工作的吗(为什么它不同于任何其他动态变量)? 有人能想出一种方法来访问我的变量,只使用标准批处理命令(不解析的输出)? 这更像是一个学术问题,而不是一个实践问题。任何人都不应该用与动态变量匹配的名称来定义变

  • 我有一个onCreate的活动,它计算您的位置和附近的事件之间的距离,我使用lastNotnloceto获取当前设备位置并在谷歌地图上标记它,但我需要它来写经度和纬度它的方法之外用于计算距离。 我已经使用LocationManager来获取粗略的坐标,但这些坐标不够准确,对于距离不到半英里的东西来说,距离为50英里。我目前拥有它,因此将覆盖从LocationManager获得的经度和纬度,但它没有

  • 我没有设置密码。我该如何解决这件事?

  • 问题内容: 我在SQLite数据库中存储了经度和纬度数据,我想获取与所输入参数最接近的位置(例如,我当前的位置-纬度/经度等)。 我知道这在MySQL中是可能的,并且我已经做了大量的研究,认为SQLite需要Haversine公式的自定义外部函数(计算球体上的距离),但是我还没有发现任何用Java编写并且可以工作的东西。 另外,如果要添加自定义功能,则需要org.sqlite.jar(用于org.