简体   繁体   English

单击OSMdroid Android时导航至标记

[英]Navigating to Marker when clicked OSMdroid Android

I've just written some code to set the onclick listeners for all markers on my map (I want to navigate to a marker when I click it). 我刚刚编写了一些代码来设置地图上所有标记的onclick侦听器(单击时我想导航到一个标记)。 However the method doesn't seem to be working - in fact I popped a few Toasts in for debugging and they don't seem to be printing either. 但是,该方法似乎不起作用-实际上,我弹出了几个Toasts进行调试,并且它们似乎也都没有打印。 Would appreciate some input on what I'm missing... I just call navigateToMarkers in onCreate(). 希望能就我所缺少的内容提供一些输入...我只是在onCreate()中调用navigationToMarkers。

//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);
    }
}

Your code is correct, it should work. 您的代码是正确的,它应该可以工作。

Which osmdroid version used? 使用了哪个osmdroid版本?

When debugging, can you check you reach the line: 调试时,您可以检查是否达到以下要求:

((Marker) bookMap.getOverlays().get(i)).setOnMarkerClickListener(

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM