在mapview上绘制路线的最简单方法 [英] Simplest way to draw a route on mapview

查看:77
本文介绍了在mapview上绘制路线的最简单方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想显示用户当前位置和他在搜索视图中输入的位置之间的路线.这是我的onQueryTextSubmit方法的代码

I want to show a route between the user's current location and the location he entered in the searchview. Here is my code for the onQueryTextSubmit method

@Override
    public boolean onQueryTextSubmit(String query) {
        // TODO Auto-generated method stub
        try
        {
            if(direction.isChecked() == false)
            {
                gc = new Geocoder(this);

                addresses = gc.getFromLocationName(query,5);
                String add = "";
                if (addresses.size() > 0) 
                {
                    p = new GeoPoint(
                            (int) (addresses.get(0).getLatitude() * 1E6), 
                            (int) (addresses.get(0).getLongitude() * 1E6));
                    mc.animateTo(p);
                    mc.setZoom(9);
                    mapView.invalidate();

                    searchView.clearFocus();
                }   
                else
                {
                     Toast.makeText(this, " Location not found.",
                                Toast.LENGTH_LONG).show();
                }
                return true;
            }
            else
            {
            // draw a route between the locations                    
                 return true;
            }
        }
        catch(IOException ex)
        {

        }

        return false;
    }

最简单的方法是什么? (示例将帮助我了解更多信息)

what is the simplest way to do it? (examples will help me understand more)

谢谢

推荐答案

一旦您拥有目的地GeoPoint,您就可以在以下地址向Google发出http请求:

Once you have your destination GeoPoint you could do an http request to google in this address:

String url = "http://maps.google.com/maps?f=d&hl=es&saddr="+ origin +"&daddr=" + destination + "&ie=UTF8&om=0&output=dragdir";

是起点和终点(纬度,经度).

being origin and destination (latitude, longitude) points.

例如,

For example, this request gives you this json:

{tooltipHtml:" (86,4 km / 55 minutos)",polylines:[{id:"route0",points:"wa{uFt|kUoAkE??jDyE??uFuLqFaH??mAl@gAZ??q@[Yg@KwCBkATq@X[bCu@??tMsBrIuBrDoA~J}EbC{@pCy@dIeA`JBrDThd@nFpDRnTkAdBGVFhRyC`McA|KkAzCK|CP??lA~@NZHn@I~@Q`@c@\\[Hu@KYWUe@Gc@D{BnG}a@`Kcb@|A}JvAkOXmHDgFKcMMmDkBgW??SaCEoFBaCb@mH`AwGdE_Qh@sCf@}Db@yGFcFIqE]iGcAkLUyGB{K^aHf@_EfC_PtAqOlB}X|AiNrCyTnE{WjDqOtCqK~DoMhHoSvX}u@~KeYpI}VrSkk@zBiJ`@_Ct@oG`@mGPoGCcLMoDq@wHiCaSe@qE_BgTMuEEoIDsJxA_`@DcHGoCw@iJkAoHsCwN_AcHk@mG]wGOcLLeJZiG\\gEr@kGhBeKpB{H~@uCvB{F~CuGbBuCdE_GlE}ElBgBfQeNpCsCtCmDtCoEnBsD~BmFdBqFz@_DdByIt@iGb@iFZeJBiYJ{GRkGf@{HpAaMdDwRzB{IrCsIrCoGbHiMzGmJnEaFjCeCdCwBfE}CdC_BzHiErNyG~NsFdN}DnQuDzK}A~KcAxKm@hJQhLAfhAhA~HQnFm@xGsAtFqBdCoAdEgC|GaGtEiF~GwIfGsGdD{CtEcDpQwKvCwBdFeE|HmIxEoGtCwElLiVfDeGxDkFvNsOvDaFbDqFnI{PtBwDfDiF`FkG~UeVfC{ClD{EpMyRzDyEdE_EvHwFpGiDfDsA|DmAhE_AdEk@hGa@jHCpLJlEIrDUnDa@fFaArF_BnGmCpHiEbVgPzBmBhBoB|B_D|AqCdAaCtGaRvAuC~EeI??jSk[zBcEnAuCnD}Jd@iBlBwJ`AgIPuBF_GKaHEeAq@mGs@gE?Ue@_Bi@mAaCwEeCgEw@qBcB}G_@gDKsB?kEJuCR}Bn@sDt@qCxAqDtCmEtAwAfCuB|AcAvCsAhBm@bDo@xGq@~Ci@fEsAvDuBdDsCrBgChBsCtEqJnC{DfDuC`EmBzCq@bDM`DNdBZxFzAlBPxCBrKaAvCCfMhA~A@vCKpCg@vD}ArA{@xBmBlBcC~A{Cx@uB|@oD^}BlAkKl@iDl@{BzAwDzBsDpBaCnBiBlB_CnFoIfD_ExAoAfEgC`CaAnDgAnCi@rAKfHLfCCzAQfDmApBuAjBmBtFgKfAyAbCwBnEsCzAoAlBaCfD{FhByDtBsFZcBPiBTqIRiB\\eBTm@t@uA`AeApBqAtB]xBExS`@bEIz@OnAe@lAy@v@y@hAkBp@qBv@}CjEwT~@uCpEwIbK{QlE}FnFeF`CeBrDsB`EaBlDaApE{@zgAqPhFiAbAc@bC{Az@{@hHwIdOqRnA{Bx@oBbRoe@fBmFzAcGtA{I`@yEzEiv@X_Cz@aEpBaGtB{DvRmW`BaC`AoBbAsCl@eCf@iDn@}G`@mC`AwD~AuDhJ{OdCuGfA{Ej@eEZwDzEgu@x@sJ^qBj@kBdD}HbAkDhEaX^gDJgC?iCKiCw@iIK_EL}Db@qDbAqD|@uBjOuVxIgQ~DsK|AuFpAaHt@_F`AqK^gL@yG_@u\\HeHNwEv@oKx@eHbDgPzDuNlAuD~F{O~BoF`AiBnBoCzFwF~CoDlBcEfAaD|Kc_@r@yBtAgD`AaBbHsJ|CsCrP_LpBwB`BqChAgDr@yDR}BhBs\\VuBx@kDlAyCdBkCdDqClQcHlC_B|CuDlJcQbA{AlAqA~_Ags@lSiSrBaCfOiWtVs]z`@_s@zMiVvAuBzPyTfRg[rBuD`B_EtCkIvKs]nCaHlEuIfHaMbMoRv[kd@lEqFfo@qp@|C{Cf@[bQsHrBoA~AsAbAqA|GsMtBiC|B_BlHwD`Au@vA{AnAmB|@wB|@eDbEmThAsEh@_BzAcDnKmP~z@}kA|AcBbDcCvFyBvSgGnBa@~TiGnNmC|DkB??xCoApDU|@UtAeAZm@\\gARkBQeK@i@^cC??pBkHvFy]Pm@ZCHQVuAAc@hAyC~@m@dBYzPq@??Jd@NJR?VSBi@pBq@l@e@d@e@jAoB\\_A\\_BnBePTCN[A[SWtIsr@Aq@VCLSAg@OQpDwX^kE??rAJrB]p@[tAuA",levels:"BBBBB?BB?BB???@??BB??????@???@???????BB??@???@????@???@????BB???@????@??????@??????@??@????@??A???@????@????@?????@????A?????@?????@???@???@?????@???A?@???@????@???@???@???A?????@????@??????????@??????@????@?????@???@???@?????BB??@???@??????@????@??@???@??A???@?????@????@?@??????????@???A???@?????@?????@???@?????@???????@??@???@???@????@???@????@???@???@??@????A????@????@????@?????@???@???@?????@??????@???@???@?????@??@???@????@???@?????@??????A???@???@??@??????@????@??@?@@???@???@???@??????@?@??@????BB????@????BB???????@??BB??????@???@????????????BB???B",numLevels:4,zoomFactor:16}]}

名称为points的字符串是您必须在地图上绘制的折线.但是在绘制之前,您必须对其进行解码.看看此处履行职责.

The String with name points is the polyline you have to draw on your map. But before drawing you have to decode it. Take a look here for that duty.

有了GeoPoint列表后,就可以在地图上绘制它了.为此,您需要一个重叠如果您使用的是Google api v1.建议您查看 api v2 .通过GoogleMap类和PolylineOptions中的addPolyline方法将折线添加到地图对象会更容易.

Once you have your GeoPoint list, you can draw it on your map. For that you need an overlay if you're using google api v1. I'd recommend you to have a look into api v2. It's easier to add polylines to map objects via the addPolyline method in GoogleMap class and PolylineOptions.

希望有帮助.

这篇关于在mapview上绘制路线的最简单方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆