Я пытаюсь воспроизвести работающее приложение HelloGoogleMaps в Open Street Maps, но у меня возникают проблемы с включением детализированного наложения в OSMdroid.
Я просмотрел несколько ресурсов, но не могу понять, как исправить ошибку в OsmItemizedOverlay. Думаю, я неправильно строю OsmItemizedOverlay или путаю OsmItemizedOverlay и ItemizedOverlay? Но все, что я пытался изменить, вызывало еще больше ошибок... "Неявный суперконструктор ItemizedOverlay() не определен. Должен явно вызывать другой конструктор" "Невозможно создать статическую ссылку на нестатический метод setMarker(Drawable) из типа OverlayItem" - Надеюсь, кто-нибудь поможет мне разобраться с определением класса?
Большое спасибо!
package com.example.osmdroiddemomap;
import java.util.ArrayList;
import android.app.AlertDialog;
import android.content.Context;
import android.graphics.Point;
import android.graphics.drawable.Drawable;
import org.osmdroid.api.IMapView;
import org.osmdroid.views.*;
import org.osmdroid.views.overlay.*;
import org.osmdroid.views.overlay.OverlayItem.HotspotPlace;
public class OsmItemizedOverlay extends ItemizedOverlay<OverlayItem> {
Context mContext;
private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
//ERRORS are raised by the following 3 lines:
public OsmItemizedOverlay(Drawable defaultMarker, Context context) {
OverlayItem.setMarker(defaultMarker);
OverlayItem.setMarkerHotspot(HotspotPlace.CENTER);
mContext = context;
}
public void addOverlay(OverlayItem overlay) {
mOverlays.add(overlay);
populate();
}
@Override
protected OverlayItem createItem(int i) {
return mOverlays.get(i);
}
@Override
public int size() {
return mOverlays.size();
}
protected boolean onTap(int index) {
OverlayItem item = mOverlays.get(index);
AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
dialog.setTitle(item.getTitle());
dialog.setMessage(item.getSnippet());
dialog.show();
return true;
}
@Override
public boolean onSnapToItem(int arg0, int arg1, Point arg2, IMapView arg3) {
// TODO Auto-generated method stub
return false;
}
}