1

我正在使用适用于 Android 的 mapquest java 库。实际上,我有一个带有地图的简单 android 应用程序,我可以确定两个位置之间的路线。我需要做的是获取这条路线的地理点。下面的代码来自 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 的元素之一是名为“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,也就是您看到的压缩格式,因为在应用程序中使用压缩格式通常效率更高。

您可以通过设置 shapeFormat 参数告诉 Directions Web Service 以原始格式发回响应,该参数包含在 Directions Web Service 文档的Advanced Routing Options部分下。查看Android Maps API 参考指南,了解有关在 Android Maps API 中设置路线选项的更多具体信息——在此页面上查找 setOptions 方法。

此外,只想补充一点,MapQuest 开发者网络上有一个Android Maps API 论坛,当您对 Android 或其他 MapQuest API(如 Flash、iOS 等)有疑问时,它也是一个很好的资源。

如果您需要更多帮助,请随时询问!

于 2012-03-19T15:28:07.953 回答