Osmdroid Marker — ставим метку на карте

В предыдущей статье мы рассматривали как отобразить карту OpenStreetMap с помощью библиотеки Osmdroid. Но такая карта сама по себе не очень интересна если на ней нельзя ничего отобразить. Начнем с простого, поставим на карте метку, давайте используем свою собственную пиктограмму —

В прошлый раз, в методе onCreate мы получили в переменную private MapView map наш View элемент с картой, и немного его настроили, давайте укажем параметр Zoom немного побольше:

    map = (MapView) findViewById(R.id.map);
    map.setLayerType(View.LAYER_TYPE_HARDWARE, null );
    map.setTileSource(TileSourceFactory.DEFAULT_TILE_SOURCE);
 
    map.setMultiTouchControls(true);
    mapController = map.getController();
    mapController.setZoom(14f);
    setUpMyMarker();

Добавим класс нашей Activity еще одно поле private Marker myMarker и добавим метод setUpMyMarker()

private void setUpMyMarker(){
    myMarker = new Marker(mapView);
    myMarker.setIcon(getResources().getDrawable(R.drawable.ic_location_pin));
    map.getOverlays().add(myMarker);
    updateMyMarker();
}

Вы же не забыли добавить в Vector Asset нашу пиктограмму?

Вот и все, маркер теперь будет весело указывать где-то посредине карты, так сказать на позицию по умолчанию. Давайте поставим его туда куда нам необходимо мне вот хочу в Париж…

    private void updateMyMarker(){
        GeoPoint point = new GeoPoint(48.855557, 2.2982284);
        myMarker.setPosition(point);
        mapController.animateTo(point);
        map.invalidate(); // Обновляем карту
    }

Давайте посмотрим что у нас получилось:

Пример маркера osmdroid

Вот собственно и все! Хочу добавить что класс GeoPoint помимо конструктора принимающего double значения широты и долготы есть конструктор принимающий объект класса android.location.Location, а что с этим делать мы узнаем в следующей статье

Поделиться этим материалом