我正在使用 StackOverflow 上的以下代码从我的活动中调用 Google Maps Intent:
final String uriContent = String.format(Locale.ENGLISH, "http://maps.google.com/maps?q=loc:%s", pCoordinate);
final Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uriContent));
pContext.startActivity(intent);
wherepCooriante
包含完整的地址,例如1.23456,7.8901
.
当我的手机使用英语作为其语言时,它运行良好,但是当我将其更改为法语或越南语(使用逗号,
作为其数字小数分隔符)时,它就不能再工作了,因为谷歌地图进行的查询看起来像:1,000,2,000
(它显示在搜索栏中,然后出现类似的消息Cannot find 1,0000,2,0000
),虽然我发送给意图的确切URI是1.000,2.000
(坐标转换为字符串以防止Locale问题,因此Locale.ENGLISH
inString.format
或多或少只是丰富)。
简而言之,Uri.parse(uriContent)
准确地返回带有查询 is 的请求1.000,2.000
,但谷歌地图本身改变了它。但是,方向代码适用于任一区域设置:
final String uriContent = String.format(Locale.ENGLISH, "google.navigation:q=%s", pCoordinate);
final Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uriContent));
pContext.startActivity(intent);
有没有办法阻止谷歌地图的转换?如果我使用geo:<coordinate>
,那很好,但我需要在那个位置有一个标记。
附加信息:
此代码final String uriContent = String.format("geo:0,0?q=%s&z=19", pCoordinate);
也不起作用,句点被转换为逗号。
此代码final String uriContent = String.format("geo:%s?q=%s&z=19", pCoordinate, pCoordinate);
可以将地图中心带到坐标,但仍然无法将标记放在那里,并出现错误“找不到'用逗号替换句点的坐标'”