如何在android中显示两个位置之间的路线?

Posted

技术标签:

【中文标题】如何在android中显示两个位置之间的路线?【英文标题】:how to show route between two location in android? 【发布时间】:2011-11-25 08:39:11 【问题描述】:

我正在使用这个网址

http://maps.google.com/maps?saddr=%f,%f&daddr=%f,%f

显示两点之间的方向页面。 我想知道我可以在这个 URL 中添加什么来获取两点之间的路线。

目前它首先显示方向页面,当我按下路线选项卡时,它会显示路线页面,但我想要的是它应该直接进入路线页面。

我正在使用此代码

String new_url = "http://maps.google.com/maps?saddr=" + ServerData.LATTITUDE + "," +  ServerData.LONGITUDE + "&daddr=" + latitude + "," + longitude ;

Intent intent_map = new Intent(Intent.ACTION_VIEW, Uri.parse(new_url));
startActivity(intent_map);

请帮忙

【问题讨论】:

检查这个问题:How to display a route between two geocoords in google maps? (android) 查看 Max Gontar 的这个答案:J2ME/Android/BlackBerry - driving directions, route between two locations 我可以在这个 kml url 中传递多个 lat 和 long 吗?只是通过一些点的例子 【参考方案1】:

试试下面的代码。下面的代码将返回纬度和经度位置列表。从那里你必须使用画布为最近的点画线。下面的代码还包含您可以使用的位置标记字符串列表。

private ArrayList<String> getDirectionData(String srcPlace, String destPlace) 

        String urlString = "http://maps.google.com/maps?f=d&hl=en&saddr="
                + srcPlace + "&daddr=" + destPlace
                + "&ie=UTF8&0&om=0&output=kml";
        Log.d("URL", urlString);
        Document doc = null;
        HttpURLConnection urlConnection = null;
        URL url = null;
        ArrayList<String> pathConent = new ArrayList<String>();
        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());

         catch (Exception e) 
        

        NodeList nl = doc.getElementsByTagName("LineString");
        for (int s = 0; s < nl.getLength(); s++) 
            Node rootNode = nl.item(s);
            NodeList configItems = rootNode.getChildNodes();
            for (int x = 0; x < configItems.getLength(); x++) 
                Node lineStringNode = configItems.item(x);
                NodeList path = lineStringNode.getChildNodes();
                pathConent.add(path.item(0).getNodeValue());
            
        
        placeMarks=new ArrayList<String>();
        NodeList place=doc.getElementsByTagName("Placemark");
        for(int i=0;i<place.getLength();i++)
            Node root=place.item(i);
            NodeList config=root.getChildNodes();
                Node placenode=config.item(0);
                NodeList name=placenode.getChildNodes();
                placeMarks.add(name.item(0).getNodeValue());
                Log.i("Node Value: ", ""+name.item(0).getNodeValue());

        
        placeMarks.remove((placeMarks.size()-1));
        Log.i("LineString: ", pathConent.get(0));
        ArrayList<String> tmpcoords=new ArrayList<String>();
        for(int i=0;i<pathConent.size();i++)
            tmpcoords.addAll(Arrays.asList(pathConent.get(i).split(" ")));
        
        //String[] tempContent = pathConent.split(" ");
        return tmpcoords;
    

【讨论】:

【参考方案2】:

您可以通过在 Android 中打开默认的 Android Maps Activity 来执行相同操作。

你可以看看这个示例代码:

例如网址:- `

https://maps.google.com/maps?saddr=28.61000000,77.23000000&daddr=28.98000000,77.02000000


   String uri = "http://maps.google.com/maps?saddr=" + currentLatitude+","+currentLongitude+"&daddr="+destLatitude+","+destLongitude;
    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);

附上截图

【讨论】:

【参考方案3】:

Android 支持访问内部应用程序及其最佳解决方案称为 android 内部地图活动,以显示两个地理点之间的路线。请参考以下代码。

String uri = "http://maps.google.com/maps?saddr=" + currentLatitude+","+currentLongitude+"&daddr="+fixedLatitude+","+fixedLongitude;
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);

它调用内置地图活动,并在当前和固定经纬度之间绘制路线路径。

【讨论】:

以上是关于如何在android中显示两个位置之间的路线?的主要内容,如果未能解决你的问题,请参考以下文章

如何在两个位置之间获得多条路线?

如何在iOS中以文本形式获取两个位置之间的路线

谷歌地图上两个位置之间的Android路线

如何在从 ListView 项获取的两个地理点之间绘制标记和路线?

如何在 Swift 中使用 MapKit 在两个位置之间绘制路线?

如何在android编程中获得两个地理点之间的精确路线