我正在使用 Mapsforge,并且我有一个 MapView,我已经添加了一些点。有些点太近了,用户无法单击它们并获得正确的弹出窗口,甚至一直放大。
我想要做的是让他们可以长按地图的一个区域,然后会出现一个可滚动的对话框,列出他们长按或类似的x像素内的点。我可以弄清楚对话框和长按的东西,但我很好奇是否有人知道如何捕获“我点击的 x 像素内的点”而不通过我的应用程序的数据库并对我保存在那里的每个点进行计算?应该有一些我可以调用或使用的mapsforge方法吗?
编辑:我最近又回来了,并添加了以下代码来捕捉长按事件,我现在正试图找出一种方法来获取周围的点。我认为它需要基于屏幕上点的位置,因为如果我根据数据库中的纬度和经度来做,我必须为每个缩放级别设置不同的距离值,等等。
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);
}