Android转弯指示(不是导航)

时间:2012-06-03 02:28:52

标签: java android html google-api

我正在为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字符?

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

编辑: 期望的结果应该是这样的: enter image description here

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

2 个答案:

答案 0 :(得分:2)

  

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

最简单的方法可能就是致电Html.fromHtml(htmlString).toString()

  

其次,如何根据数组的大小显示透明列表?

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

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

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

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

navigation example

答案 1 :(得分:0)

我所采取的一种简单方法是使用 Webview 并在其中加载HTML information

例如:

1)让下面给出的 HTML指令是Google Directions 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)在您的布局文件中添加网络视图,并在您的代码中引用它:

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.fromHtml作为TextView时,certain information got broken