0
  String uri = "http://maps.google.com/maps?saddr=" + src_lat+","+src_lon+"&daddr="+des_lat1+","+des_lon1;
   Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(uri));
   intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
   startActivity(intent);

これは、出発地と目的地の両方の緯度と経度がわかっている2つの場所の間のルートを描画するためのコードです。src_lonしかし、ここでは、現在地の経度と緯度をとに置き換えたいと思いsrc_latます。これらの値は不明であり、この経度と緯度は現在の場所に変更されます。そのようなルートを描くことは可能ですか?

4

3 に答える 3

1
private void DrawPath(GeoPoint src, GeoPoint dest, int color,
                      MapView mMapView01) {

    // Connect to the map web service
    StringBuilder urlString = new StringBuilder();
    urlString.append("http://maps.google.com/maps?f=d&hl=en");
    urlString.append("&saddr=");//from
    urlString.append( Double.toString((double)src.getLatitudeE6()/1.0E6 ));
    urlString.append(",");
    urlString.append( Double.toString((double)src.getLongitudeE6()/1.0E6 ));
    urlString.append("&daddr=");//to
    urlString.append( Double.toString((double)dest.getLatitudeE6()/1.0E6 ));
    urlString.append(",");
    urlString.append( Double.toString((double)dest.getLongitudeE6()/1.0E6 ));
    urlString.append("&ie=UTF8&0&om=0&output=kml");
    Log.d("xxx","URL="+urlString.toString());

    //System.out.println(urlString);
    // Get the KML (XML) document. And parse it to get the coordinates(direction route).
    Document doc = null;
    HttpURLConnection urlConnection= null;
    URL url = null;
    try
    {
        url = new URL(urlString.toString());
        urlConnection=(HttpURLConnection)url.openConnection();
        urlConnection.setRequestMethod("GET");
        urlConnection.setDoOutput(true);
        urlConnection.setDoInput(true);
        urlConnection.connect();

        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();
        doc = db.parse(urlConnection.getInputStream());

        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 = pairs[0].split(","); // lngLat[0]=longitude lngLat[1]=latitude lngLat[2]=height
            // Source
            GeoPoint startGP = new GeoPoint((int)(
                Double.parseDouble(lngLat[1])*1E6),
                (int)(Double.parseDouble(lngLat[0])*1E6));
            //mMapView01.getOverlays().add(overlayitem);
            GeoPoint gp1;
            GeoPoint gp2 = startGP;
            for(int i=1; i<pairs.length; i++) // The last one would crash.
            {
                lngLat = pairs[i].split(",");
                gp1 = gp2;
                // watch out! For GeoPoint, first:latitude, second:longitude
                gp2 = new GeoPoint((int)(Double.parseDouble(lngLat[1])*1E6),(int)(Double.parseDouble(lngLat[0])*1E6));
                mMapView01.getOverlays().add(new MapRouteOverlay(gp1,gp2,2,color));
                Log.d("xxx","pair:" + pairs[i]);
            }
            //mMapView01.getOverlays().add(new MapRouteOverlay(dest,dest, 3)); // Use the default color
        }
    }
    catch (MalformedURLException e)
    {
        e.printStackTrace();
    }
    catch (IOException e)
    {
        e.printStackTrace();
    }
    catch (ParserConfigurationException e)
    {
        e.printStackTrace();
    }
    catch (SAXException e)
    {
        e.printStackTrace();
    }
}
于 2012-05-01T04:45:38.197 に答える
1

これを試して:

Intent i = new Intent(android.content.Intent.ACTION_VIEW,
       Uri.parse("google.navigation:q=" +destLat+ ","+destLon+""));
this.startActivity(i);

これは私が知っている最良の解決策です。

于 2012-05-27T06:34:40.917 に答える
0

はい、ロケーションマネージャを使用して、現在のロケーションの緯度と経度を取得します。ロケーション戦略を参照し、ルートについてはGoogleDirectionsAPIを使用してください。

于 2012-05-01T04:53:43.857 に答える