1

ユーザーの現在の場所とユーザーが検索ビューに入力した場所の間のルートを表示したいと思います。これがonQueryTextSubmitメソッドのコードです

@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;
    }

それを行う最も簡単な方法は何ですか?(例は私がもっと理解するのに役立ちます)

ありがとうございました

4

2 に答える 2

4

宛先のGeoPointを取得したら、次のアドレスでgoogleにhttpリクエストを実行できます。

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

出発地と目的地(緯度、経度)のポイントです。

たとえば、このリクエストは次の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は、マップ上に描画する必要のあるポリラインです。しかし、描画する前に、それをデコードする必要があります。その義務についてはこちらをご覧ください。

GeoPointリストを取得したら、それをマップに描画できます。そのためには、googleapiv1を使用している場合はオーバーレイが必要です。APIv2を確認することをお勧めします。GoogleMapクラスのaddPolylineメソッドとPolylineOptionsを使用して、マップオブジェクトにポリラインを追加する方が簡単です。

お役に立てば幸いです。

于 2012-12-17T09:42:29.847 に答える
0

2つの方法で、地図上にルートを描くことができます。

1.AndroidでMapOverLayの概念を使用します2.このURLを使用し ますhttp://maps.google.com/maps?&saddr=緯度の値から、経度の値&daddr =から緯度の値、経度の値へ

于 2012-12-17T09:44:40.390 に答える