如何阅读GeoPoint一次然后回到普通视图?

时间:2018-06-06 04:19:45

标签: java android openstreetmap osmdroid osmbonuspack

我对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

但我不知道我应该把它放在哪里。

1 个答案:

答案 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);
}