Android 我的位置越界问题

Android 我的位置越界问题,android,Android,我在logcat中看到了“error 1”消息,但在那之后我出现了一个空指针异常,我不知道为什么,我相信我会用“if”块检查MyLoOverlay是否为空。。有什么建议吗 编辑: 这是我的assignedGFirstLoc方法,用于分配firtst值: private void initMyLocation() { myLocOverlay = new MyLocationOverlay(this, myMap); myLocOverlay.enableCompa

我在logcat中看到了“error 1”消息,但在那之后我出现了一个空指针异常,我不知道为什么,我相信我会用“if”块检查MyLoOverlay是否为空。。有什么建议吗

编辑:

这是我的assignedGFirstLoc方法,用于分配firtst值:

private void initMyLocation() {
        myLocOverlay = new MyLocationOverlay(this, myMap);
        myLocOverlay.enableCompass();
        myLocOverlay.enableMyLocation();
        myMap.getOverlays().add(myLocOverlay);
        if (myLocOverlay == null)
    { 
        assignFirstLoc();

    }


if (myLocOverlay != null)
            {
                Log.e("error","1");
                p = new GeoPoint((int) (myLocOverlay.getMyLocation().getLatitudeE6()), (int) (myLocOverlay.getMyLocation().getLongitudeE6()));
                mc = myMap.getController();
                mc.animateTo(p);
                mc.setCenter(p); 

            } 

看起来您没有向GeoPoint传递任何坐标。除非它在代码中的其他地方。像这样的工作

private void assignFirstLoc()
    {
        final String coordinates[] = {"41.00527", "28.97696"};
        double lat2 = Double.parseDouble(coordinates[0]);
        double lng2 = Double.parseDouble(coordinates[1]);
        p = new GeoPoint((int) (lat2 * 1E6), (int) (lng2 * 1E6));
        myMap.getController().setZoom(16);
        myMap.getController().animateTo(p);
        myMap.getController().setCenter(p);

    }

MyLocationOverlay
只能用于显示来自传感器的位置。 你不能设置它。 由于
MyLocationOverlay.getMyLocation()
返回null,所以您得到了一个空指针。传感器还没有时间捕捉地理位置

如果要显示传感器获取数据时的位置,可以执行以下操作:

String coordinates[] = {"41.146064", "-80.642861"};
    double lat = Double.parseDouble(coordinates[0]);
    double lng = Double.parseDouble(coordinates[1]);

    p = new GeoPoint((int) (lat * 1E6), (int) (lng * 1E6));
如果要在任意位置显示项目(具有纬度和经度值),则需要实现自己版本的
ItemizedOverlay
您可以在SDK文档中找到一个示例:,第2部分AddingOverlayItem

如果您只想在地图上显示任意位置,则不需要覆盖。只需调用您的函数,它就会工作:

mMyLocationOverlay.runOnFirstFix(new Runnable() { public void run() {
        mapView.getController().animateTo(mMyLocationOverlay.getMyLocation());
}});

如何检查getMyLocation()的值?我认为由于gps问题,笔记本电脑无法定位。在toast消息中,我在手机上取了“空”值。这没有意义。为什么要检查空值
MyLocationOverlay
?当你检查它时,它显然永远不会为空,因为你已经实例化了它,所以它在那里永远不会为空。我真的不知道你是否想要我可以发送我的项目。我只想得到我的位置,并试着将我的屏幕居中。是的,你的方法可行,但假设我在其他地方,我不知道确切的坐标,所以我必须使用location.getLatitude()或myLocOverlay.getMyLocation().getLatitudeE6()方法但这些方法会产生错误您必须有一些方法来确定您的地理位置,就像在android设备上使用GPS位置一样。您的空指针是由于缺少地理点数据造成的。MyLocationOverlay实现了android.hardware.SensorListener和android.location.LocationListener。因此,您必须在某个地方从您的设备获取地理编码位置。我使用的是叠加,但我的地质点数据来自数据库。不过,我知道LocationListener应该适合您。阅读本文,我添加了一个我的assignFirstLoc方法。正如你们所了解的,我给geopoint分配了一个特殊数据。然后,一旦创建方法再次编译,我就得到了一个geopoint值,我认为myLocOverlay不是null,但我在initMyLocation方法中添加了一个toast消息,它返回“null”:S
private void initMyLocation() {
    assignFirstLoc();
}