1

我正在为 android 制作一个应用程序,我正在使用 Google Directions API 来获取和解析路线中的每一条腿。我正在地图上显示路线(已经在工作)

我想显示一个转弯方向的列表(尽管它们不会随着你的前进而前进,只是一个方向列表。

我有几个问题,首先,如何获得每条腿的描述?解析 JSON 让我得到这一行:

"html_instructions": "Head \u003cb\u003enorth\u003c/b\u003e on \u003cb\u003eS Morgan St\u003c/b\u003e toward \u003cb\u003eW Cermak Rd\u003c/b\u003e"

Java 输出为:

Head <b>north</b> on <b>S Morgan St</b> toward <b>W Cermak Rd</b>

有没有一种简单的方法可以将其解析为要在列表中显示的普通字符串?或者只是用“”替换html字符?

其次,如何根据数组的大小在地图视图的顶部显示具有半透明背景的列表?

编辑:期望的结果应该是这样的: 在此处输入图像描述

只有他们使用带有固定数量的文本视图的 TableLayout。我想要这样的东西,最好是小一点的,它会显示所有,或者只是一些(并且能够改变)路线描述找不到关于这些问题的信息。谢谢

4

2 回答 2

2

有没有一种简单的方法可以将其解析为要在列表中显示的普通字符串?

可能最简单的方法是调用Html.fromHtml(htmlString).toString().

二、如何根据数组大小显示透明列表?

“透明列表”到底是什么意思?我假设一个显示“空”项目的列表?您可能可以使用null任何应该不可见的项目填充数据集,然后您可以在Adapter. 或者,您可以例如使用 a Map<String, Boolean>,其中的值表示您是要在其中显示字符串(键) ListView还是隐藏它/使其透明。

更新问题后编辑:获得那种透明效果实际上非常简单。“矩形”只是一个单独ViewGroup的黑色背景颜色,包括透明度;例如#55000000。您可以使用前两个十六进制数字来更改透明度,从而更改视觉色调。

要在地图顶部显示路线信息,您需要使用 aRelativeLayout作为根(并可能为其设置半透明背景颜色)。之后,您可以使用您希望它显示的任何内容填充特定的 UI。例如,前几天我创建了类似的东西(作为给朋友的生日礼物),它将把他带到礼物的实际位置。我只是添加了上一个/下一个按钮来手动在导航提示之间移动。

(对不起,提示是荷兰语,但我相信你明白了)

导航示例

于 2012-06-03T03:04:16.263 回答
0

我所做的一种简单方法是使用Webview并加载HTML information它。

例如 :

1) 让下面给出的HTML 指令是 Google 路线 API 的响应

    String routeDirection =
                    "Head <b>southeast</b> on <b>Vennala High School Rd</b> toward <b>Evra Lane 9</b>" +
                    "<div style=\"font-size:0.9em\">Pass by Mangalayil Devi temple (on the right)</div>";

2)在您的布局文件中添加一个 Web 视图并在您的代码中引用它:

WebView webViewDirections = (WebView)findViewById(R.id.webView);

3)如下所示加载html instruction您的:webview

webViewDirections.loadDataWithBaseURL(null, tempRouteDirection, "text/html", "utf-8", null);

4)您甚至可以自定义 HTML 信息(更改背景颜色、字体颜色..)

webViewDirections.getSettings();
        webViewDirections.setBackgroundColor(Color.TRANSPARENT);
        webViewDirections.getSettings().setJavaScriptEnabled(true);
        webViewDirections.setWebViewClient(new WebViewClient() {
            public void onPageFinished(WebView view, String url) {
                view.loadUrl(
                        "javascript:document.body.style.setProperty(\"color\", \"white\");"
                );
            }
        });

注意: 我之所以选择这个解决方案,是因为在我使用Html.fromHtmlTextView 时,某些信息会被破坏

于 2018-01-12T17:43:44.797 回答