저는 osmdroid를 사용 중이며 사용자가지도를 누르고있을 때 새로운 마커를 추가하기 위해 MapEventsReceiver, MapEventsOverlay 및 LongPressHelper를 구현했습니다. 이것은 처음으로 처음으로 작동합니다.OSMDROID - longPressHelper는 마커를 추가 할 때만 처음으로 실행됩니다.
내 longPressHelper에서 addMarker(p);
을 제거하면 매번 실행됩니다.
왜 이런 일이 일어나는 지 알 수 있습니까?
코드 :
mapviewInit -에서 onCreate에서 호출 개인 무효 mapviewInit() {
mapview = (MapView) findViewById(R.id.mapview);
mapview.setTileSource(TileSourceFactory.MAPNIK);
mapview.setBuiltInZoomControls(true);
mapview.setMultiTouchControls(true);
IMapController mapController = mapview.getController();
mapController.setZoom(16);
GeoPoint startPoint = new GeoPoint(48.8583, 2.2944);
mapController.setCenter(startPoint);
MapEventsReceiver meReceiver = new MapEventsReceiver() {
@Override
public boolean singleTapConfirmedHelper(GeoPoint p) {
return false;
}
@Override
public boolean longPressHelper(GeoPoint p) {
Toast toast = Toast.makeText(getApplicationContext(), "DEBUGDEBUGDEBUG", Toast.LENGTH_LONG);
toast.show();
addMarker(p);
return true;
}
};
addMarker - LongPressHelper 공공 무효 addMarker에 의해 호출 (GeoPoint의 GeoPoint의) {
Drawable dr = getResources().getDrawable(R.drawable.icn_crosshair_red);
Bitmap bitmap = ((BitmapDrawable) dr).getBitmap();
Drawable d = new BitmapDrawable(getResources(), Bitmap.createScaledBitmap(bitmap, 100, 100, true));
mapview.getOverlays().clear();
mapview.invalidate();
selectedPosMarker = new Marker(mapview);
selectedPosMarker.setPosition(geoPoint);
selectedPosMarker.setInfoWindow(null);
selectedPosMarker.setIcon(d);
selectedPosMarker.setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_BOTTOM);
mapview.getOverlays().add(selectedPosMarker);
mapview.invalidate();
}
아. 내가 실제로 의도 한 것은 화면에서 마커를 제거하여 다시 다시 추가 할 수 있다는 것입니다. 어쨌든 전체 오버레이를 제거하지 않고 마커를 제거 할 수 있습니까? 도움과 답장을 보내 주셔서 감사합니다. –
mapview.getOverlays(). remove (selectedPosMarker); 제거/생성하지 않고 기존 마커를 새 위치로 이동할 수도 있습니다. – MKer