Как добавить мое текущее местоположение с помощью osmdroid? - PullRequest
0 голосов
/ 06 декабря 2018

Я полностью новичок в Android-студии и хочу создать проект, который показывает координаты x, y пользователя на карте openstreet (в виде указателя).Я просмотрел коды GitHub, но это действительно было трудно ..

Я добавил карту, не могли бы вы объяснить, как я могу узнать свое местоположение из GPS?Вот мой код ..

package mytestapplication.hello.com.map;

import android.Manifest;
import android.content.Context;
import android.content.pm.PackageManager;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.preference.PreferenceManager;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

import org.osmdroid.api.IMapController;
import org.osmdroid.config.Configuration;
import org.osmdroid.tileprovider.tilesource.TileSourceFactory;
import org.osmdroid.util.GeoPoint;
import org.osmdroid.views.MapView;
import org.osmdroid.views.overlay.mylocation.IMyLocationConsumer;
import org.osmdroid.views.overlay.mylocation.IMyLocationProvider;
import org.osmdroid.views.overlay.mylocation.MyLocationNewOverlay;


public class MainActivity extends AppCompatActivity {
    MapView map = null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Context ctx = getApplicationContext();
        Configuration.getInstance().load(ctx, PreferenceManager.getDefaultSharedPreferences(ctx));

        map = findViewById(R.id.map);
        map.setTileSource(TileSourceFactory.MAPNIK);
        IMapController mapController = map.getController();
        map.setBuiltInZoomControls(true);
        map.setMultiTouchControls(true);

        mapController.setZoom((long) 14);
        GeoPoint startPoint = new GeoPoint(x, y);
        mapController.animateTo(startPoint);



    }

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

        map.onPause();
    }

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


}

Любой ответ был бы полностью полезен ...

1 Ответ

0 голосов
/ 06 декабря 2018

См. osmdroid wiki .Самое простое решение - добавить оверлей My Location к виду карты:

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