osmdroid - 无法访问当前位置。

时间:2018-01-09 19:28:20

标签: android osmdroid

我正在开发一个使用osmdroid的应用,而我目前正试图在地图上显示当前的用户位置。我还没有设置一个标记来实际标记当前位置的主要位置,因为我不认为我采取的任何方法都有效。以下是我最近从以下问题(Question code is from)获得的尝试。使用调试器,我可以看到它在run()方法中解决了什么问题。当我逐步完成代码时,它似乎跳过了这些界限。有人可以给他们任何帮助吗?我必须明确调用run吗?我认为runOnFirstFix的目的但也许我错了。谢谢!

主要活动:

GpsMyLocationProvider provider = new GpsMyLocationProvider(this);
    provider.addLocationSource(LocationManager.NETWORK_PROVIDER);
    locationOverlay = new MyLocationNewOverlay(provider, map);
    locationOverlay.enableFollowLocation();
    locationOverlay.runOnFirstFix(new Runnable() {
        public void run() {
            Log.d("MyTag", String.format("First location fix: %s", locationOverlay.getLastFix()));
            mapController.animateTo(locationOverlay.getMyLocation());
        }
    });

    map.getOverlayManager().add(locationOverlay);
map.invalidate();
}

public void onResume(){
    super.onResume();
    Configuration.getInstance().load(this, PreferenceManager.getDefaultSharedPreferences(this));
    locationOverlay.enableMyLocation();
}

Android Manifest:

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<uses-feature
    android:name="android.hardware.location.network"
    android:required="false" />
<uses-feature
    android:name="android.hardware.location.gps"
    android:required="false" />
<uses-feature
    android:name="android.hardware.telephony"
    android:required="false" />
<uses-feature
    android:name="android.hardware.wifi"
    android:required="false" />

2 个答案:

答案 0 :(得分:1)

几周前我最终解决了这个问题。我没有从设备中正确获取权限。因为我没有明确要求设备允许使用位置。我将在此处发布用于解决问题的代码。

$(document).ready(function() {
  var arrLength = [];
  var eleLength = $(".item-box.item-box-active").length;  
  //var eleLength = $(".area-bounding-box .item-box.item-box-active").length;  
  console.log("length", eleLength);
  if (eleLength === 0) {
        $(".btnCount").html("5");
    } else {
        $(".btnCount").html("2");
    }
    arrLength.push(eleLength);
    console.log(arrLength);
});

我可能已经从Stack Overflow上的社区拼凑起来了,所以感谢任何帮助我解决其他问题的人!

答案 1 :(得分:0)

运行时权限设置?以下是文档:您将需要位置和可能的外部存储空间。https://developer.android.com/training/permissions/requesting.html