добавление наложения в MapView в osmdroid

Я пишу простое приложение для Android, используя osmdroid, которое работает онлайн и офлайн, пока я не могу отображать карту (онлайн и офлайн), и я хочу добавить наложение (маркеры) на карту, я искал простой пример для использования оверлей в osmdroid, и я пробовал некоторые из них, но они не работали, поэтому мне нужен пример для добавления оверлея или маркера с помощью osmdroid


person Abdalwhab Bakheet    schedule 25.04.2012    source источник
comment
привет @AbdalwhabBakheet .... твой проект решен прямо сейчас? Интересно, не могли бы вы поделиться некоторыми уроками в сети, не так ли?   -  person gumuruh    schedule 09.08.2014


Ответы (2)


Посмотрите на класс ItemizedIconOverlay.

В Интернете есть несколько примеров, если вы ищете, пример был опубликован на Stack Overflow здесь: ОСМДРОЙД

person Martin Pearman    schedule 26.04.2012
comment
спасибо, Мартин Пирман, у меня это работает нормально, но я заметил, что для этого требуется использование Интернета, и если я устанавливаюUseDataConnection(false), возникает ошибка, может ли он работать в автономном режиме, и есть ли другие способы отметить точки на карте - person Abdalwhab Bakheet; 29.04.2012
comment
Если код работает и оверлей правильно добавляется в MapView, когда для параметра UseDataConnection установлено значение true, то тот же код должен работать, когда для параметра UseDataConnection установлено значение false. Какую ошибку вы получаете, когда для UseDataConnection установлено значение false? - person Martin Pearman; 03.05.2012
comment
спасибо, Мартин Пирман, я снова тестирую свой код, и он отлично работает с setUseDataConnection(false). Я думаю, что было не так, возможно, я пытался отобразить наложение в части карты, которая не загружена. - person Abdalwhab Bakheet; 04.05.2012

public class mapcode extends Activity {
    globalvar appState;
    int stats=0;
    private MapView mapView;
    private IMapController mapController;
    private SimpleLocationOverlay mMyLocationOverlay;
    private ScaleBarOverlay mScaleBarOverlay;  
    ItemizedIconOverlay<OverlayItem> currentLocationOverlay;
    DefaultResourceProxyImpl resourceProxy;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
        setContentView(R.layout.map);

        appState = ((globalvar) getApplicationContext());





        mapView = (MapView) this.findViewById(R.id.mapview);  
        mapView.setTileSource(TileSourceFactory.MAPNIK);
      //  mapView.setBuiltInZoomControls(true); //кнопка ZOOM +-
        mapView.setMultiTouchControls(true);

        mapController = this.mapView.getController();
        mapController.setZoom(2);

        this.mMyLocationOverlay = new SimpleLocationOverlay(this);                          
        this.mapView.getOverlays().add(mMyLocationOverlay);

        this.mScaleBarOverlay = new ScaleBarOverlay(this);                          
        this.mapView.getOverlays().add(mScaleBarOverlay);


        /////////////////
        resourceProxy = new DefaultResourceProxyImpl(getApplicationContext());
        GeoPoint  currentLocation = new GeoPoint(55.860863,37.115046); 
        GeoPoint  currentLocation2 = new GeoPoint(55.8653,37.11556); 
        OverlayItem myLocationOverlayItem = new OverlayItem("Here", "Current Position", currentLocation);
        Drawable myCurrentLocationMarker = this.getResources().getDrawable(R.drawable.a);
        myLocationOverlayItem.setMarker(myCurrentLocationMarker);

        final ArrayList<OverlayItem> items = new ArrayList<OverlayItem>();
        items.add(myLocationOverlayItem);



      myLocationOverlayItem = new OverlayItem("Here", "Current Position", currentLocation2);
     myCurrentLocationMarker = this.getResources().getDrawable(R.drawable.a);
        myLocationOverlayItem.setMarker(myCurrentLocationMarker);


        items.add(myLocationOverlayItem);



        currentLocationOverlay = new ItemizedIconOverlay<OverlayItem>(items,
                new ItemizedIconOverlay.OnItemGestureListener<OverlayItem>() {
                    public boolean onItemSingleTapUp(final int index, final OverlayItem item) {
                        return true;
                    }
                    public boolean onItemLongPress(final int index, final OverlayItem item) {
                        return true;
                    }
                }, resourceProxy);
        this.mapView.getOverlays().add(this.currentLocationOverlay);

mapView.invalidate(); // для того чтобы появились маркеры }

person SKULL    schedule 24.05.2014