【问题标题】:How to display Route on my OSM application如何在我的 OSM 应用程序上显示路由
【发布时间】:2014-02-19 07:57:55
【问题描述】:

在日志中

02-19 14:41:29.151  10336-10336/com.example.app E/BONUSPACK﹕ OSRMRoadManager::getRoad: request failed.

02-19 14:41:29.151  10336-10336/com.example.app I/System.out﹕ 2

我有route.gpx 文件,但我不知道如何使用它

    GeoPoint startPoint = new GeoPoint(48.13, -1.63);

    mapView = (MapView) findViewById(R.id.mapview);
    mapCTRL = (MapController) mapView.getController();

    mapCTRL.setZoom(13);
    mapView.setBuiltInZoomControls(true);
    mapCTRL.setCenter((new GeoPoint(startPoint)));

    RoadManager roadManager = new OSRMRoadManager();
    ArrayList<GeoPoint> waypoints = new ArrayList<GeoPoint>();
    waypoints.add(startPoint);
    //waypoints.add(new GeoPoint(16.236505, 103.264646)); //end point บ้านดินดำ
    waypoints.add(new GeoPoint(48.4, -1.9)); //end point

    Road road = roadManager.getRoad(waypoints);
    System.out.println(road.mStatus);

    Polyline roadOverlay = RoadManager.buildRoadOverlay(road, this);
    mapView.getOverlays().add(roadOverlay);
    mapView.invalidate();

    setContentView(mapView);

    mapView.invalidate();

【问题讨论】:

  • 你考虑过使用 osmdroid 奖励包吗? code.google.com/p/osmbonuspack
  • @MaM 是的,我想显示 A 到 B 之间的路线方向
  • @illnino 如何使用 OSM API 设置源坐标和目标坐标,它是什么?
  • @KarthikeyanVe 我在我的 garph 文件类型 .gpx 中使用 lat lon 在我的离线应用程序上设置 A 到 B

标签: android openstreetmap osmdroid


【解决方案1】:

假设您打算使用在线路由服务,这个问题应该与这个问题相关联: RoadManager for osmdroid error

假设你想拥有一个离线路由系统,那么使用 OSRMRoadManager(它使用 OSRM 在线服务)是无关紧要的。你可以看看离线路由软件,比如 GraphHopper。

【讨论】:

    【解决方案2】:
    new Thread(new Runnable()
    {
        public void run() 
        {
            RoadManager roadManager = new OSRMRoadManager();
            ArrayList<GeoPoint> waypoints = new ArrayList<GeoPoint>();
            GeoPoint startPoint = new GeoPoint(source_lat, source_longi);               
            waypoints.add(startPoint);
            GeoPoint endPoint = new GeoPoint(desti_lat,desti_longi);
            waypoints.add(endPoint);                    
            try 
            {
                road = roadManager.getRoad(waypoints);
            } 
            catch (Exception e)
            {
                e.printStackTrace();
            }
    
            runOnUiThread(new Runnable() 
            {
                public void run() 
                {
                    if (road.mStatus != Road.STATUS_OK)
                    {
                          //handle error... warn the user, etc. 
                    }
    
                    Polyline roadOverlay = RoadManager.buildRoadOverlay(road, Color.RED, 8, context);
                    map.getOverlays().add(roadOverlay);                 
                }
            });
        }
    }).start(); 
    
    And i am use two jar files 1)slf4j-android-1.5.8.jar and 2)osmdroid-android-4.2.jar and osmbonuspack library.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-18
      • 1970-01-01
      • 1970-01-01
      • 2021-02-01
      • 2011-02-03
      • 2011-08-08
      相关资源
      最近更新 更多