我正在构建一个应用程序,其功能是将特定的预定(但动态)坐标发送到用户的地图应用程序,以便他可以跟踪到它的路径。
目前,我正在使用:
String coordinates = String.format("geo:0,0?q=" + latitude + "," + longitude);
Intent intent = new Intent( Intent.ACTION_VIEW, Uri.parse(coordinates) );
startActivity( intent );
然而,当它确实打开地图时,而不是请求的位置,我得到“没有结果[纬度],[经度]”吐司和我当前的位置。
这当然不是坐标本身的问题,因为手动搜索它们工作得很好并且打印请求Uri显示它是正确构造的。令人惊讶的是,只发送两个coords的前两位数字的工作,虽然不发送我想要的地方,但不会给出toast错误信息。
传递值或其他东西时是否需要进行任何额外的格式化?
我正在使用它们原始,-23.561261和-46.681212,例如,我位于巴西,如果这有任何区别,是的,我必须发送坐标,因为遗憾的是数据与实际的格式不一致地址。
更新:事实证明,代码很好,它适用于我的razr-i,但是,在我用于原始测试的Galaxy Express中,它仍然是不行的。
知道发生了什么事吗?这两款设备都运行Android 4.1.2
答案 0 :(得分:4)
不要错过 错误,因为它已经很久以前了,但长话短说,这就是工作代码:
String coordinates = "http://maps.google.com/maps?daddr=" + latitude + "," + longitude;
Intent intent = new Intent( Intent.ACTION_VIEW, Uri.parse(coordinates) );
startActivity( intent );
答案 1 :(得分:2)
您的代码是正确的,
您发送的值是双倍?
double latitude = -23.561261;
double longitude = -46.681212;
String coordinates = String.format("geo:0,0?q=" + latitude + "," + longitude);
Intent intentMap = new Intent( Intent.ACTION_VIEW, Uri.parse(coordinates) );
startActivity( intentMap );
必须类似于在浏览器中直接加载网址:
答案 2 :(得分:0)
问题在于语言环境。如果您调用format(),您的代码将适用于任何手机:
String coordinates = String.format(Locale.ENGLISH, "geo:%f,%f", latitude, longitude);