-2

このリンクhttp://wptrafficanalyzer.in/blog/driving-route-from-my-location-to-destination-in-google-maps-を使用して、現在の場所から目的地までの運転ルートを描画しようとしてい ます。 android-api-v2/

地図をクリックしているときにルートを取得していますが、地図が自動的にロードされたら目的地の場所を手動で指定したいのですが、ルートはこれを行う方法を示します pls はコードを送信します..

4

2 に答える 2

0

それを達成するには2つの方法があります。

1.) 組み込みのジオコーダーを使用する

2.)Google APIを使用する

2 つの方法のいずれかで住所を渡し、対応する住所の緯度と経度を取得し、それを現在地の緯度と経度とともに渡してルートを描画します。

于 2013-09-13T09:02:25.723 に答える
0

このコードを確認してください:

1) Google マップ サービスを呼び出して、ルート情報を取得します。

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) Google からの応答文字列を解析します。

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;
}
于 2013-09-13T09:15:30.770 に答える