使用Google Map API v2在android中绘制从当前位置到目标位置的路线

时间:2013-09-13 08:56:00

标签: android google-maps-android-api-2

我试图借助此链接绘制从当前位置到目的地位置的行车路线 http://wptrafficanalyzer.in/blog/driving-route-from-my-location-to-destination-in-google-maps-android-api-v2/

在点击地图的同时获取路线但是我希望在地图自动加载后手动给出目的地位置路线将显示如何执行此操作请发送代码..

2 个答案:

答案 0 :(得分:0)

有两种方法可以实现这一目标,

1.)使用内置Geocoder

2.)使用Google api

只需在两种方法中的任何一种方法中传递您的地址,然后获取相应地址的纬度和经度,并将其与当前位置纬度和经度一起传递以绘制路线。

答案 1 :(得分:0)

请检查此代码:

1)调用谷歌地图服务获取路线信息:

StringBuilder urlString = new StringBuilder();
        urlString
                .append("http://maps.googleapis.com/maps/api/directions/json?sensor=true");
        urlString.append("&origin=");// from
        urlString.append(curLocation.getLatitude());
        urlString.append(",");
        urlString.append(curLocation.getLongitude());
        urlString.append("&destination=");// to
        urlString.append(carPark.getLat());
        urlString.append(",");
        urlString.append(carPark.getLng());
        Log.d("xxx", "URL=" + urlString.toString());

        aq.ajax(urlString.toString(), JSONObject.class, this,
                "gmapCallback");

2)从谷歌解析响应字符串。

public GeoPoint[] parseRoute(String content) {
    Document doc = null;
    GeoPoint[] route = null;
    try {

        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();
        doc = db.parse(new ByteArrayInputStream(content.getBytes()));

        if (doc.getElementsByTagName("GeometryCollection").getLength() > 0) {
            // String path =
            // doc.getElementsByTagName("GeometryCollection").item(0).getFirstChild().getFirstChild().getNodeName();
            String path = doc.getElementsByTagName("GeometryCollection")
                    .item(0).getFirstChild().getFirstChild()
                    .getFirstChild().getNodeValue();
            Log.d("xxx", "path=" + path);
            String[] pairs = path.split(" ");
            String[] lngLat;
            // lngLat[0]=longitude
            // lngLat[1]=latitude
            // lngLat[2]=height
            route = new GeoPoint[pairs.length];
            GeoPoint gp;
            for (int i = 0; i < pairs.length; i++) {
                lngLat = pairs[i].split(",");
                gp = new GeoPoint(
                        (int) (Double.parseDouble(lngLat[1]) * 1E6),
                        (int) (Double.parseDouble(lngLat[0]) * 1E6));
                route[i] = gp;
                Log.d("xxx", "pair:" + pairs[i]);
            }
        }
    } catch (Exception e) {
        Log.e(Utils.class.getName(), e.getMessage());
    }
    return route;
}