Я использую Mapsforge, и у меня есть MapView. Я добавил несколько моментов. Некоторые из точек слишком близки, чтобы пользователь мог щелкнуть их и получить нужное всплывающее окно, даже увеличенное до конца.Android выбирает самые близкие точки в радиусе при длительном нажатии
То, что я хочу сделать, это сделать так, чтобы они могли нажимать на область карты, и появится прокручиваемое диалоговое окно, в котором перечислены точки, расположенные в таких же пикселях, где они долго нажимаются, или что-то в этом роде. Я могу разобраться в диалоговом окне и длительной работе с прессой, но мне любопытно, знает ли кто-нибудь, как фиксировать «точки в пикселях 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);
}