2012-02-06 145 views
0

我的问题是我有4位置的纬度和经度进入我的本地数据库,我获取这些数据并在android中使用绘制路径路径,但问题是第一个到第二个位置路线不显示在mapview其他第二个到第三和第三到第四条路径路径显示在mapview上。对不起,英文交流不好。Mapview绘制路径路径

我从下面的链接获取代码以获取路径路径。

MapRoute Example

,并使用下面的函数调用绘图类: -

public void drawpath(){ 
     mDb.open(); 
     Cursor cr = mDb.getAllTitles(); 
     cr.moveToFirst(); 

     if (cr.getCount() > 0) { 
      for (int i = 0; i <= cr.getCount()/2; i++) { 
       fromlat = Double.parseDouble(cr.getString(1)); 
       fromlng = Double.parseDouble(cr.getString(2)); 
       cr.moveToNext(); 
       tolat = Double.parseDouble(cr.getString(1)); 
       tolng = Double.parseDouble(cr.getString(2)); 

       String url = RoadProvider 
         .getUrl(fromlat, fromlng, tolat, tolng); 
       InputStream is = getConnection(url); 
       mRoad = RoadProvider.getRoute(is); 
       MapOverlay mapOverlay = new MapOverlay(mRoad, mapView); 
       List<Overlay> listOfOverlays = mapView.getOverlays(); 
       listOfOverlays.add(mapOverlay); 
       mapView.invalidate(); 
      } 
     } 

     cr.close(); 
     mDb.close(); 
    } 
+0

看到这个http://stackoverflow.com/questions/8612524/android-url-to-access-kml-route – NagarjunaReddy 2012-02-06 07:24:29

+0

我使用的代码,但问题是相同的,唯一的第一个到第二个位置路径不显示其他人正在显示... – 2012-02-06 07:29:12

+0

这是因为你只循环一半的坐标:'cr.getCount()/ 2' – Reno 2012-02-06 08:31:35

回答

0
Intent intent = new Intent(android.content.Intent.ACTION_VIEW, 
Uri.parse("http://maps.google.com/maps?saddr=20.344,34.34&daddr=20.5666,45.345")); 
startActivity(intent); 
0

它发生,因为你正在使用cr.getCount()/2.

当你将有偶数个计数则将工作不正常工作

例如,如果你有4个行数,那么你cr.getCount()/2 = 2 所以你的循环将从0继续到2意味着3次。 其实它应该继续2次作为您的编码。

现在拉取一个奇数说5如此cr.getCount()/2 = 2,因为我是整数值,所以你的循环将总共工作3次。

所以你有不同的机制。

就像尝试在arraylist中添加所有lat和long,然后在循环完成后添加。

创建一个该arrayList的大小的循环并创建一个路径。可能是因为您需要两个额外的变量来存储前一个lat和long。