1.亲爸爸谷歌。
1)
话不多说。文档地址:
https://developers.google.com/maps/documentation/urls/android-intents
使用Intent打开谷歌地图。
官方文档悉尼案例:
Uri gmmIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);
实际最简单使用时这样
Uri gmmIntentUri = Uri.parse("google.navigation:q=" + lat+"," + longi);//直接导航的
Intent mapIntent =new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
context.startActivity(mapIntent);
参数纬度和经度。默认驾车。打开后,直接自动进入驾车导航模式。退回上一级是交通方式选择、路线规划页。

更多设置还有参数
mode d驾车,b自行车,l(two-wheeler,英语18级直译两轮),w走路 此参数设置一个。
avoid 顾名思义,避免什么 t(tolls收费的),h (highways,高速),f(ferries,渡轮,英语18级猜测是不要码头的路线?,属实不解) 此参数可以设置多个。
Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&avoid=tf");
Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&mode=b");
由于本人集成的是高德,经纬度再加上高德的地名参数传入,经常会出现找不到地方问题。所以只传入了纬度和经度。
再一个,高德在使用的是gcj02,即国测局坐标系,而谷歌在国内也是用的gcj02,
高德在国外和谷歌一样,都用的gps84坐标系,因此高德坐标系打开谷歌地图导航,不需要坐标转换。
百度使用自己的坐标系Bd09 ,转换算法很容易找到。
2)https://developers.google.com/maps/documentation/urls/guide
打开交通方式选择和路线规划页。
Uri gmmIntentUri = Uri.parse("https://www.google.com/maps/dir/?api=1&" +
" origin=" + startLat+","+startLongi+"&" +
"destination="+toLati+"," + toLongi);
Intent mapIntent =new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
context.startActivity(mapIntent);

可以看到默认也是驾车,只是我第一次打开时,默认是走路路线?
复杂参数设置来个:
##
[https://www.google.com/maps/dir/?api=1&origin=Space+Needle+Seattle+WA&destination=Pike+Place+Market+Seattle+WA&travelmode=bicycling]
对于调起外部应用导航,一般简单参数的就可以满足需求了。
2.国内的百度高德腾讯地图。基本不用多说了.
和谷歌地图类似,可选择打开路线规划页,或者直接驾车导航,都是两个不同的Uri.
详情整理待续...
网友评论