Google Maps Intent缩放级别不生效 求排查原因
嘿,这不是Bug,是你的URI格式写错啦!
我看了你的代码,缩放级别不生效的问题出在Google Maps Intent的URI拼接上,跟系统或Maps本身没关系~
先看你出问题的这行代码:
val gmmIntentUri = Uri.parse("geo:0,0?q=" + myDetails.myCoordinates + "?z=8&(Google+Australia)")
具体错在哪?
- 第一个
?已经用来分隔URI的路径和查询参数了(q=是第一个参数),后面再加?z=8就会被Maps当成是搜索内容的一部分,而不是缩放参数,自然不会生效 - 另外地点名称的写法也有点问题,正确的姿势是把坐标和名称合并在
q参数里,不用额外加&
改完的代码是这样的:
// 把坐标和地点名合并到q参数,用&来连接z缩放参数 val gmmIntentUri = Uri.parse("geo:0,0?q=${myDetails.myCoordinates}(Google Australia)&z=8")
如果担心特殊字符搞出问题,用Uri.Builder构建会更稳妥,不容易写错:
val uri = Uri.Builder() .scheme("geo") .path("0,0") .appendQueryParameter("q", "${myDetails.myCoordinates}(Google Australia)") .appendQueryParameter("z", "8") .build() val mapIntent = Intent(Intent.ACTION_VIEW, uri) mapIntent.setPackage("com.google.android.apps.maps") // 然后正常启动Intent就行
对了,Google Maps的z参数范围是1(全球视角)到23(街道级细节),你可以根据需要调整数值哦~
内容的提问来源于stack exchange,提问作者wbk727
相关产品推荐
相关产品推荐

