我对Android开发完全陌生,我在为Android创建应用时使用了osmdroid,我希望通过点击地图获得一个点,我找到了这个解决方案:
git add -f
这个page,我把它放在Button的MapEventsReceiver mReceive = new MapEventsReceiver()
{
@Override
public boolean singleTapConfirmedHelper(GeoPoint p) {
Toast.makeText(getBaseContext(),p.getLatitude() + " - "+p.getLongitude(),Toast.LENGTH_LONG).show();
GeoPoint point = new GeoPoint(p.getLatitude(),p.getLongitude());
// This is the line i will explain in problem #2
Global_point = point;
return true;
}
@Override
public boolean longPressHelper(GeoPoint p) {
return false;
}
};
MapEventsOverlay OverlayEvents = new MapEventsOverlay(mReceive);
mapView.getOverlays().add(OverlayEvents);
函数中。
问题是:
1-它(点接收)不会停止并且它将永远运行,当GeoPoint收到时我怎么能阻止它?
2- MapEventsReceiver是一个应该按照定义实现的接口,因此Onclick
函数应返回一个布尔值,如何通过单击返回收到的GeoPoint?我知道我可以定义一个全局变量并将其填入singleTapConfirmedHelper函数中,但我问是否可以更改接口函数返回值。
Ps :我知道我可以通过索引删除地图叠加层:
singleTapConfirmedHelper
但我不知道我应该把它放在哪里。
答案 0 :(得分:0)
你应该从singleTapConfirmedHelper调用一些methot。它是匿名类,因此它可以调用创建它的类的方法。
MapEventsReceiver mReceive = new MapEventsReceiver() {
@Override
public boolean singleTapConfirmedHelper(GeoPoint p) {
Toast.makeText(getBaseContext(),p.getLatitude() + " - "+p.getLongitude(),Toast.LENGTH_LONG).show();
onPointSelected(point);
return true;
}
//...
}
以后,在你的Activity或Fragment中的某个地方:
private void onPointSelected(GeoPoint p) {
//do whatever you want with the point. For example: store it in a field
this.selectedPoint = p;
//finish interaction => somehow remove or turn of particular overlay
mapView.getOverlays().remove(0);
}