내 응용 프로그램에는 이미 맵에 정적 오버레이가 있고 GPS 좌표가 바뀌면 위치가 바뀌는 동적 인 오버레이가 있습니다. 그래서OSMDroid 오버레이 다중 정적 및 동적 1 개
mapView.getOverlays().clear();
:
내 문제는 GPS의 좌표를 변경할 때, 나는 동적 오버레이를 삭제하고 새로 만들어야합니다,하지만 난 그렇게 할 때, 그것을 사용하여, 모든 오버레이를 삭제한다는 것입니다 , 나는 그것을하는 더 좋은 방법을 찾으려고 노력하고있다.
모든 오버레이를 지운 다음 다시 맵에 배치 (메모리 사용)하거나 특정 오버레이를 지울 수 있습니까?
감사
편집 :
이 동적 마커 :
public void putPlacesOfInterest(){
this.dh = new DataHelper(ShowMap.this);
List<Pontos> list = this.dh.selectAll();
for(Pontos p : list){
markerPlaces.add(new OverlayItem(p.getName().toString(), p.getName().toString(), new GeoPoint(p.getLat(), p.getLng())));
}
mMyLocationOverlay = new ItemizedIconOverlay<OverlayItem>(markerPlaces, new OnItemGestureListener<OverlayItem>() {
@Override
public boolean onItemLongPress(int index, OverlayItem item) {
Toast.makeText(ShowMap.this, "Item " + item.mTitle, Toast.LENGTH_LONG).show();
return true;
}
@Override
public boolean onItemSingleTapUp(int index, OverlayItem item) {
Toast.makeText(ShowMap.this, "Item " + item.mTitle, Toast.LENGTH_LONG).show();
return true;
}
}, mResourceProxy);
mapView.getOverlays().add(mMyLocationOverlay);
mapView.invalidate();
}
: 이것은 정적 마커를 배치 기능이
@Override
public void onLocationChanged(Location location) {
Log.d("Location", "onLocationChanged with location " + location.toString());
mLatitude = (int) (location.getLatitude() * 1E6);
mLongitude = (int) (location.getLongitude() * 1E6);
GeoPoint gpt = new GeoPoint(mLatitude,mLongitude);
markerYou.clear();
markerYou.add(new OverlayItem(getString(R.string.markerYou), getString(R.string.markerYouDescription), gpt));
mMyLocationOverlay = new ItemizedIconOverlay<OverlayItem>(markerYou, new ItemizedIconOverlay.OnItemGestureListener<OverlayItem>() {
@Override
public boolean onItemSingleTapUp(final int index, final OverlayItem item) {
Toast.makeText(ShowMap.this, getString(R.string.markerYouDescription), Toast.LENGTH_SHORT).show();
return true;
}
@Override
public boolean onItemLongPress(final int index, final OverlayItem item) {
Toast.makeText(ShowMap.this, getString(R.string.markerYouDescription),Toast.LENGTH_SHORT).show();
return true;
}
}, mResourceProxy);
mapView.getOverlays().clear();
mapView.getOverlays().add(mMyLocationOverlay);
mapView.invalidate();
mapController.setCenter(gpt);
}
입니다
마커 선언은 어떻게됩니까? –