Mapview绘制路径路径

时间:2012-02-06 07:16:31

标签: android android-mapview

我的问题是我有4个位置的纬度和经度进入我的本地数据库,我正在获取这些数据并用于android中的绘制路径路径但问题是第一个到第二个位置路线不显示在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();
    }

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

这种情况正在发生,因为您使用的是cr.getCount()/2.

如果您的计数数量均匀,那么它将无法正常工作

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

现在lat取奇数5说cr.getCount()/2 = 2因为我是整数值所以你的循环总共会工作3次。

所以你有不同的机制。

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

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