1

Android用のmapquest Javaライブラリを使用しています。実際、私はマップ付きのシンプルな Android アプリケーションを持っており、2 つの場所間のルートを決定できます。私がしなければならないことは、このルートのジオポイントを取得することです。以下のコードは、mapquest のサンプルからのものです。

routeManager.setRouteCallback(new RouteManager.RouteCallback() {

    public void onSuccess(RouteResponse routeResponse) {
    clearButton.setVisibility(View.VISIBLE);
    if (showItineraryButton.getVisibility() == View.GONE &&
        showMapButton.getVisibility() == View.GONE) {
        showItineraryButton.setVisibility(View.VISIBLE);
    }
    createRouteButton.setEnabled(true);
    }
});

routeResponse オブジェクトには、jsonObject タイプの serviceResponse フィールドがあります。このjsonObjectの要素の1つが「shapePoints」というフィールドです。RouteResponse のドキュメントによると、routeResponse フィールドにはジオポイントのペアの配列が必要です。私はこの配列を取得していませんが、ある種のハッシュされた文字列:/:

"shapePoints":"gvxpjAfxthgEkF?cQ]yQ?umA?qMOog@Oej@?u|Ak@qv@OcLOoHiBcGwD_IoHiCkAoCOmFN_DjAyBhBaBhC}JpR??gToS_b@}_@oIaHee@{`@k_@c[eo@se@ce@q\\iHsEgh@q\\}m@__@_i@uY_IeEyWgNav@}_@cjAum@s~@sf@{[eOc[kLiMeE{JwCgTsFmd@oIuwAkVwiHqoAux@wNgh@oIuYuEqMiBuJ{AyLyB}JyB_SeEmPeEuSsFka@{Lse@wMsPeFcLwCqjAm^ey@mUuiD{_Akp@aReTaGoSuE{[sGm_@uDku@sFyL}@eJ{@eJkAgJkA{J{BwIgCyGyBoNcGaNaHkd@iWgT{KyQ}JmUkKwX{KmqBcp@a_B}h@cVaIab@wMiRcGgc@uNa`Ae[_d@uNu^{L}JwCsZ}JyRaGwXsGe^oHgc@qHuaC{`@{nAmT}w@wMykAaSchBiWoqAqQq`AwNqv@{KyyA_Tia@cGiMgCmF}@mE{@kPiCmUuE}c@kKeo@ePmn@uO{OgDcQwC{QiCqQiBe`@wCsZ{Awr@}@}TMm_@Ogr@N_]O{`@]se@O{y@]yH?sKL_NzAmPxC{JhB}OhBmP|@wNl@{O\\ka@xBiRjA}^hCmd@xBoXz@wb@?uhA]iW{@qRiCiWcGcVoH}EkBeTaHeJyBaNkA{Jm@aS{@_S?iWl@cQxAaXfEuY|Ic[hMsP~HgO~IiWnRmd@~^yLlIi\\zVir@ng@{TfOiR|J{Q`GiMvDsPfCoIlA}JjA??_I]kK\\mOhBuOhCyg@fNc`@lUcQzJkP`I{j@bZ_hAhl@y`@nSwc@jVmYhMyWhMyLpGab@|ToqArp@ip@p[ej@r[}^lTuOlKqMjKeOfNiMlK_DtDyLtOoIzLuPdYaQtYee@hv@cQdZuT`]yQlUmUxV_InI_s@fw@_XfYeEtEag@xk@kFrF}OpQmUvYmOzT}i@~|@cQlUw]fc@}T|T_XxViRvNkFdE{GdE{J`IaIrF_IrEoN`Is_@pQiR~Hwr@~SwNfDo{Az`@et@pQcLtEc[pGob@pHw]hBiRzAaX?_X{@oXgDmKkAsKyBeTuF}OeEcVoI??cVoSoIsFcGeE_SyLuUoIkPsFcL{AcQuDwSyByf@oJwSsE}OqH{O{KoNwNgJ_IsFeEiMcGkKkA_N]??cLeEqCwD{@_Il@ku@z@ofANag@Tud@Ns[|@ux@pAikAbB}}@NiLhBkiA?m~@?mhA?cp@?ag@?mJ?kiA?cQ?iM?iM?sZ?ee@Nia@?}gA?afATud@?kV?wM?qoANoqAe@qR}@}JeE{K_IkKiCeF_DaGsAgEe@eEOgD?gD?iBNyB|@wCxBcGjAwD~CsFxGoHbByCzEwMd@cG?cP?gc@?yk@{@kLcBcGVkK?kK?{`@??kB?"

ルートのジオポイントを取得するために、変な shapePoints 文字列を手伝ってください。ポイントの獲得方法が違うのかもしれません。数日間グーグルで検索しようとしましたが、大きな結果はありませんでした;/

4

1 に答える 1

2

表示されている shapePoints 文字列は実際には圧縮された形式であるため、shapePoints を示していますが、通常の読み取り可能な生の形式ではありません。Android Maps API は、ルーティング機能にMapQuest Directions Web Serviceを使用します。Android API のデフォルトの routeResponse 形式は cmp6 です。これは、表示されている圧縮形式です。これは、通常、アプリケーションで圧縮形式を使用する方が効率的であるためです。

高度なルーティング オプションセクションの下のルート案内 Web サービス ドキュメントに含まれている shapeFormat パラメーターを設定することにより、未加工の形式で応答を返すようルート案内 Web サービスに指示できます。Android Maps API 内からルート オプションを設定する方法の詳細については、Android Maps API リファレンス ガイドをご覧ください。このページで setOptions メソッドを探してください。

また、MapQuest Developer NetworkにはAndroid Maps API フォーラムがあり、Android やその他の MapQuest API (Flash、iOS など) について質問がある場合に確認するのに適したリソースでもあることを付け加えておきます。

さらにサポートが必要な場合は、お気軽にお問い合わせください。

于 2012-03-19T15:28:07.953 に答える