我很难找到一种方法来返回一个带有用户刚刚触摸的位置的经度和纬度的GeoPoint。我已经看到和阅读了大量的例子,它们通过重写dispatchTouchEvent()来显示吐司中的经度和纬度。我认为这不适用于我的情况,原因如下。
我希望用户能够单击一个按钮,然后调用另一个方法,该方法将在用户的下一次点击时返回一个地理位置。因此,简而言之,只有在用户单击按钮后,才会在点击时返回地理位置。
我在使用dispatchTouchEvent()时看到的唯一变通方法是:
如果该按钮已被单击,则写入共享首选项。然后在dispatchTouchEvent()中检查是否已单击该按钮。如果尚未单击,则不执行任何操作。如果单击了它,则将经度和纬度写入共享首选项,然后从共享首选项中读取它们,并以不同的方法创建一个GeoPoint。
我不觉得这是一个非常优雅的想法。我觉得应该有一种更干净的方式来做这件事(就像以某种方式只返回一个地理位置)。
我希望这能有一点意义。我会尽力回答我能回答的任何问题。
提前谢谢。
发布于 2011-11-02 13:04:22
我刚刚读了你的question..so的标题,如果我回答错了,请原谅。
mapView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
GeoPoint p = null;
if (event.getAction() == MotionEvent.ACTION_UP) {
p = mapView.getProjection().fromPixels((int) event.getX(),
(int) event.getY());
mapBackButton.setText(p.getLatitudeE6() / 1E6 + ","
+ p.getLongitudeE6() / 1E6 + "Action is : "
+ event.getAction());
return true;
Toast.makeText(
getBaseContext(),
p.getLatitudeE6() / 1E6 + "," + p.getLongitudeE6()
/ 1E6 + "Action is : " + event.getAction(),
Toast.LENGTH_SHORT).show();
}
return false;
}
});https://stackoverflow.com/questions/7975862
复制相似问题