OSMdroid не может получить текущее местоположение в студии Android

Во-первых, я новичок в OSMdroid. Я знаю, что есть и другие подобные вопросы по этой теме, но недавних вопросов нет, а ответы на старые вопросы не работают в моем коде...

Я не могу получить текущее местоположение с помощью OSMDroid. Я использовал простой учебник, приведенный на github, и предложения, данные в предыдущих вопросах. У меня установлена ​​последняя версия OSMDroid, но когда я пытаюсь добавить тег для текущего местоположения, ничего не происходит.

Я даже не получаю ошибок, карта просто отображается без маркера для текущего местоположения. Помощь! Вот мой код.

Любая помощь будет принята с благодарностью, так как это очень раздражает!

Java Class
@Override public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        Context ctx = getApplicationContext();
        //important! set your user agent to prevent getting banned from the osm servers
        Configuration.getInstance().load(ctx, 
        PreferenceManager.getDefaultSharedPreferences(ctx));
        setContentView(R.layout.activity_map);

        mMapView = (MapView) findViewById(R.id.mapview);
        mMapView.setTileSource(TileSourceFactory.MAPNIK);

        mMapView.setBuiltInZoomControls(true);
        mMapView.setMultiTouchControls(true);

        IMapController mapController = mMapView.getController();
        mapController.setZoom(9);
        GeoPoint startPoint = new GeoPoint(52.1237453, 6.9293683);
        mapController.setCenter(startPoint);

        this.mLocationOverlay = new MyLocationNewOverlay(new GpsMyLocationProvider(ctx),mMapView);
        this.mLocationOverlay.enableMyLocation();
        mMapView.getOverlays().add(this.mLocationOverlay);

XML-код

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <org.osmdroid.views.MapView
        android:id="@+id/mapview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tilesource="Mapnik" />
</LinearLayout>

person Aholmes86    schedule 22.11.2017    source источник


Ответы (1)


Две возможные причины.

1) В вашем манифесте отсутствуют разрешения для ACCESS_FINE_LOCATION

2) Если целевой SDK 23 или новее, вы должны запросить разрешения GPS на уровне пользователя перед созданием GpsMyLocationProvider

В исходном коде примера приложения osmdroid есть примеры того и другого: https://github.com/osmdroid/osmdroid/blob/master/OpenStreetMapViewer/src/main/java/org/osmdroid/intro/PermissionsFragment.java#L94< /а>

и тут:

https://github.com/osmdroid/osmdroid/blob/master/OpenStreetMapViewer/src/main/AndroidManifest.xml#L24

person spy    schedule 23.11.2017
comment
Привет. Спасибо за помощь, наконец-то все заработало. Я установил разрешения и перестроил код, и теперь он работает. Спасибо еще раз! - person Aholmes86; 23.11.2017