【发布时间】:2017-11-08 06:11:08
【问题描述】:
我刚刚编写了一些代码来为我的地图上的所有标记设置 onclick 侦听器(我想在单击它时导航到一个标记)。但是该方法似乎不起作用-实际上我弹出了一些 Toasts 进行调试,它们似乎也没有打印。希望能提供一些关于我所缺少的信息...我只是在 onCreate() 中调用 navigateToMarkers。
//method to set onclicks for markers - when you click one, you navigate to it.
private void navigateToMarkers(){
for(int i=0; i<bookMap.getOverlays().size(); i++){
if(bookMap.getOverlays().get(i) instanceof Marker){
((Marker) bookMap.getOverlays().get(i)).setOnMarkerClickListener(new Marker.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker, MapView mapView) {
DrawRoad drawRoad = new DrawRoad(getCurrentLocation(), marker.getPosition());
drawRoad.execute();
Toast.makeText(MapActivity.this, "Marker clicked!", Toast.LENGTH_SHORT).show();
return true;
}
});
}
}
}
//we do this in a different thread as it takes some amount of processing power to get route to ucd.
private class DrawRoad extends AsyncTask<Void, Void, Road> {
GeoPoint startPoint;
GeoPoint endPoint;
public DrawRoad(GeoPoint startPoint, GeoPoint endPoint){
this.startPoint = startPoint;
this.endPoint = endPoint;
}
@Override
protected Road doInBackground(Void... voids) {
RoadManager roadManager = new OSRMRoadManager(MapActivity.this);
ArrayList<GeoPoint> waypoints = new ArrayList<>();
waypoints.add(startPoint);
waypoints.add(endPoint);
Road road = roadManager.getRoad(waypoints);
return road;
}
protected void onPostExecute(Road road){
updateUIWithRoad(road);
}
}
【问题讨论】:
标签: java android openstreetmap osmdroid