저는 Mapsforge를 사용 중이며 MapView가 있습니다. 몇 가지 점을 추가했습니다. 포인트 중 일부는 너무 가까워서 사용자가 클릭하여 올바른 팝업을 얻을 수 있으며 모든 경우에 확대 할 수 있습니다.안드로이드는 길게 누르기에서 반경 내에서 가장 가까운 점을 선택합니다.
내가하고 싶은 것은지도의 일부를 길게 만들 수 있고, 스크롤 할 수있는 대화 상자에서 길게 누르거나 그와 비슷한 위치의 x 픽셀 안에있는 점을 나열합니다. 대화 상자와 길게 누르는 물건을 알아낼 수는 있지만, 누군가가 내 앱 데이터베이스를 거치지 않고 내가 저장 한 모든 포인트에서 계산을 실행하지 않고 "클릭 한 위치의 x 픽셀 내 포인트"를 캡처하는 방법을 알고 있다면 궁금합니다. 내가 호출하거나 사용할 수있는 몇 가지 mapsforge 메서드가 있어야합니까?
EDIT : 나는이 최근에 돌아 왔고 긴 프레스 이벤트를 잡기 위해 다음 코드를 추가했다. 지금 나는 주변의 포인트를 잡는 방법을 알아 내려고하고있다. 나는 포인트가 화면 상에있는 것을 기반으로해야한다고 생각합니다. 왜냐하면 데이터베이스에서 위도와 경도를 기반으로하면 줌 레벨마다 다른 거리 값을 사용해야하기 때문입니다.
boolean ACTION_MOVED = false;
long beginTime;
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
switch (motionEvent.getAction()) {
case MotionEvent.ACTION_DOWN: {
beginTime = System.currentTimeMillis();
ACTION_MOVED = false;
break;
}
case MotionEvent.ACTION_MOVE: {
ACTION_MOVED = true;
break;
}
case MotionEvent.ACTION_UP: {
if (System.currentTimeMillis() - beginTime >= ViewConfiguration.getLongPressTimeout())
if (!ACTION_MOVED) {
Toast.makeText(mapActivity, "long Press", Toast.LENGTH_SHORT).show();
ACTION_MOVED = false;
return true;
}
break;
}
}
return view.onTouchEvent(motionEvent);
}