Я пишу простое приложение для Android, используя osmdroid, которое работает онлайн и офлайн, пока я не могу отображать карту (онлайн и офлайн), и я хочу добавить наложение (маркеры) на карту, я искал простой пример для использования оверлей в osmdroid, и я пробовал некоторые из них, но они не работали, поэтому мне нужен пример для добавления оверлея или маркера с помощью osmdroid
добавление наложения в MapView в osmdroid
comment
привет @AbdalwhabBakheet .... твой проект решен прямо сейчас? Интересно, не могли бы вы поделиться некоторыми уроками в сети, не так ли?
- person gumuruh   schedule 09.08.2014
Ответы (2)
Посмотрите на класс ItemizedIconOverlay.
В Интернете есть несколько примеров, если вы ищете, пример был опубликован на Stack Overflow здесь: ОСМДРОЙД
person
Martin Pearman
schedule
26.04.2012
спасибо, Мартин Пирман, у меня это работает нормально, но я заметил, что для этого требуется использование Интернета, и если я устанавливаюUseDataConnection(false), возникает ошибка, может ли он работать в автономном режиме, и есть ли другие способы отметить точки на карте
- person Abdalwhab Bakheet; 29.04.2012
Если код работает и оверлей правильно добавляется в MapView, когда для параметра UseDataConnection установлено значение true, то тот же код должен работать, когда для параметра UseDataConnection установлено значение false. Какую ошибку вы получаете, когда для UseDataConnection установлено значение false?
- person Martin Pearman; 03.05.2012
спасибо, Мартин Пирман, я снова тестирую свой код, и он отлично работает с 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