这个问题是在Android的背景下进行的。 因此,根据Google的文档,我们应该如何向地图应用发送查询: https://developer.android.com/guide/components/intents-common.html#Maps
或者换句话说,发送一个地理位置的URI:0,0?q =我的+街道+地址 当我们想去我的街道地址时
但是,如果我应用此代码:
final String GEO_LOCATION =" geo:0,0?&#34 ;;
final String QUERY_PARAM =" q&#34 ;;
Uri builtUri = Uri.parse(GEO_LOCATION).buildUpon()。appendQueryParameter(QUERY_PARAM,location).build();
buildUri实际上不会有0,0例如,如果你检查它的String值(到String或调试模式), 值是geo:?q = ....没有0,0。
虽然我的地图应用程序(谷歌地图)在没有0,0的情况下工作得非常好,但是对于我来说理解发生了什么将会是惊人的!为什么要删除0,0?如果我希望它有目的地发送,我有什么方法可以保留它吗?
答案 0 :(得分:1)
geo URI并不真正遵循URI语法的完整规则。 geo URI是“不透明的”,因为“geo:”之后的所有内容基本上都没有通常的URI规范(它可以是他们想要的任何东西)。在谷歌的情况下,他们选择使用看起来像查询字符串的参数,但它们不是URI规范意义上的查询字符串。我知道,这很奇怪。
如果你想使用尽可能多的“正确”代码从不透明的地理URI构建一个android Uri,你可以这样做:
def writes(bar: Bar) = {
val defaultValue = BigDecimal(0)
JsObject(Seq(
"id" -> JsNumber(bar.id.fold(defaultValue)(BigDecimal(_))),
"name" -> JsString(bar.name)
))
}