高德地图车机版API演示程序
做车载的应该和这个程序打交道打的比较多吧,这里是我今天写的一个实现了他的API的一个演示程序
相对于其他的api来说,这个api已经相对挺完善的,如果想使用这个车机版地图,你需要去下载一些资源包,放在对应的位置然后联网激活,这些就不详细的说明了
概述
高德地图车机版(amapauto)第三方调用API是为整车厂、前后装主机厂、系统方案商、开发者等,提供的在自己系统或应用中调用高德地图车机版功能的一套方法。调用方可以根据业务需求,调用POI搜索、路线规划、地图操控、导航等功能,充分提升和完善系统及应用的车载体验。
适用环境
Android车机网页端或车机应用App
支持版本
支持Android高德地图车机版AppV1.1.0及以上版本
术语约定
Intent调用:Android平台术语,指代第三方应用调用高德地图车机版Android客户端的方式
我们主要来看下我们的程序,他只有一个ListView,所有我们的程序layout应该是:
activity_main.xml
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="5dp">
android:id="@+id/mListView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
我们的主程序就更好说话了
MainActivity
packagecom.liuguilin.com.amapsample;
importandroid.content.Intent;
importandroid.support.v7.app.AppCompatActivity;
importandroid.os.Bundle;
importandroid.util.Log;
importandroid.view.View;
importandroid.widget.AdapterView;
importandroid.widget.ArrayAdapter;
importandroid.widget.ListView;
importjava.util.ArrayList;
importjava.util.List;
/
高德车机版API演示程序
官网:http://lbs.amap.com/api/amapauto/#id004
by刘桂林
/
publicclassMainActivityextendsAppCompatActivity{
//TAG
privatestaticfinalStringTAG="AMapSample";
//列表
privateListViewmListView;
//适配器
privateArrayAdapteradapter;
//数据
privateListmList;
//应用名称
privateStringappName;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initData();
initView();
}
/
初始化数据/便于扩展
/
privatevoidinitData(){
mList=newArrayList<>();
mList.add("1.进入主图");
mList.add("2.显示我的位置");
mList.add("3.路线规划");
mList.add("4.通过地址");
mList.add("5.通过经纬度");
mList.add("6.搜索地点");
mList.add("7.关键字导航");
mList.add("8.周边分类");
mList.add("9.直接导航");
mList.add("10.地图标注");
mList.add("11.地图操作");
mList.add("12.特殊点导航");
mList.add("13.全程概览");
mList.add("14.路线偏好");
mList.add("15.路线偏好");
mList.add("16.取消导航");
mList.add("17.退出应用");
mList.add("18.打开收藏夹");
}
/
初始化
/
privatevoidinitView(){
//程序名
appName=getString(R.string.app_name);
Log.i(TAG,"appName:"+appName);
mListView=(ListView)findViewById(R.id.mListView);
adapter=newArrayAdapter(this,android.R.layout.simple_list_item_1,mList);
mListView.setAdapter(adapter);
mListView.setOnItemClickListener(newAdapterView.OnItemClickListener(){
@Override
publicvoidonItemClick(AdapterView>adapterView,Viewview,inti,longl){
parsing(i);
}
});
}
/
操作
@parami
/
privatevoidparsing(inti){
Log.i(TAG,"position:"+i);
switch(i){
//1.进入主图进入高德地图车机版主图页面
case0:
openMapOperation("androidauto://rootmap?sourceApplication="+appName);
break;
//2.显示我的位置显示当前车位
case1:
openMapOperation("androidauto://myLocation?sourceApplication="+appName);
break;
//3.路线规划输入起点和终点,计算驾车线路。支持按偏好规划路线
case2:
//起点纬度
doubleslat=36.2;
//起点经度
doubleslon=116.1;
//起点名称
Stringsname="abc";
//终点纬度
doubledlat=36.3;
//终点经度
doubledlon=116.2;
//终点名称
Stringdname="def";
/
起终点是否偏移
0:lat和lon是已经加密后的,不需要国测加密;
1:需要国测加密
/
intdev=0;
/
驾车方式
=0(速度快)
=1(费用少)
=2(路程短)
=3不走高速
=4(躲避拥堵)
=5(不走高速且避免收费)
=6(不走高速且躲避拥堵)
=7(躲避收费和拥堵)
=8(不走高速躲避收费和拥堵)
/
intm=0;
openMapOperation("androidauto://route?sourceApplication="+appName+
"&slat="+slat+"&slon="+slon+"&sname="+sname+"&dlat="+
dlat+"&dlon="+dlon+"&dname="+dname+"&dev="+dev+"&m="+m);
break;
//4.通过地址给定POI名称,得出该点的经纬度坐标
case3:
Stringaddr="深圳世界之窗";
openMapOperation("androidauto://viewGeo?sourceApplication="+appName+"&addr="+addr);
break;
//5.通过经纬度给定经纬度坐标,得出相应的POI地址名称
case4:
doublelat=39.9;
doublelon=116.48;
//起终点是否偏移(0:lat和lon是已经加密后的,不需要国测加密;1:需要国测加密)
intdev4=0;
openMapOperation("androidauto://viewReGeo?sourceApplication="+appName+"&lat="+lat+"&lon="+lon+"&dev="+dev4);
break;
//6.搜索地点搜索周边的超市、银行、加油站等分类信息。
case5:
//搜索POI的关键字,如银行、加油站
Stringkeywords="电影院";
//起终点是否偏移(0:lat和lon是已经加密后的,不需要国测加密;1:需要国测加密)
intdev5=0;
//这里官网提供了两种方式,经纬度和兴趣点,有兴趣的可以自己去官网
openMapOperation("androidauto://poi?sourceApplication="+appName+"&keywords="+keywords+"&dev="+dev5+"Wod");
break;
//7.关键字导航根据名称,启动高德地图车机版搜索终点,选择终点后开始启动导航。
case6:
//搜索关键字
Stringkeywords6="方恒国际中心";
/
导航方式
0速度快
1费用少
2路程短
3不走高速
4躲避拥堵
5不走高速且避免收费
6不走高速且躲避拥堵
7躲避收费和拥堵
8不走高速躲避收费和拥堵
/
intstyle=2;
openMapOperation("androidauto://keywordNavi?sourceApplication="+appName+"&keywords="+keywords6+"&style="+style);
break;
//8.周边分类搜索周边的超市、银行、加油站等分类信息
case7:
Stringkeywords7="银行";
//dev照旧
//官网提供两种方式
openMapOperation("androidauto://arroundpoi?sourceApplication="+appName+"&keywords="+keywords7+"&dev=0");
break;
//9.直接导航输入终点,以用户当前车位为起点开始路线导航
case8:
//POI名称
Stringpoiname="fangheng";
//纬度
doublelat8=36.547901;
//经度
doublelon8=104.258354;
//dev和style照旧
//貌似不需要action_view
openMapOperation("androidauto://navi?sourceApplication="+appName+"&poiname="+poiname+
"&lat="+lat8+"&lon="+lon8+"&dev=1&style=2");
break;
//10.地图标注根据名称或经纬度,启动高德地图车机版展示一个标注点
case9:
//POI名称
Stringpoiname9="abc";
//纬度
doublelat9=36.2;
//经度
doublelon9=116.1;
//dev照旧
openMapOperation("androidauto://viewMap?sourceApplication="+appName+"&poiname=abc&lat="+lat9+"&lon="+lon9+"&dev=0");
break;
//11.地图操作对地图进行操作,开关实时路况,缩放地图,切换视角。可组合
case10:
/
0实时路况开
1实时路况关
/
inttraffic=0;
/
0缩小地图
1放大地图
/
intzoom=1;
/
0切换2d车上
1切换2d北上
2切换3d车上支持
/
intswitchView=2;
openMapOperation("androidauto://mapOpera?sourceApplication="+appName+"&traffic="+traffic+"&zoom="+zoom+"&switchView="+switchView);
break;
//12.特殊点导航回家/公司
case11:
/
home回家
crop回公司
/
Stringdest="home";
openMapOperation("androidauto://navi2SpecialDest?sourceApplication="+appName+"&dest="+dest);
break;
//13.全程概览进入或退出全程概览状态。仅在导航引导状态下响应
case12:
/
0进入全览
1退出全览
/
intisShowPreview=0;
openMapOperation("androidauto://naviPreview?sourceApplication="+appName+"&isShowPreview="+isShowww.shanxiwang.netwPreview);
break;
//14.路线偏好导航引导状态下,按偏好组合重新规划路线
case13:
//躲避拥堵0开;1关
intisAvoidJam=0;
//避免收费0开;1关
intisVoidCharge=0;
//不走高速0开;1关
intisAvoidHighway=0;
//高速优先0开;1关
intusingHighway=0;
openMapOperation("androidauto://naviRoutePrefer?sourceApplication="+appName+
"&isAvoidJam="+isAvoidJam+"&isVoidCharge="+isVoidCharge+
"&isAvoidHighway="+isAvoidHighway+"&usingHighway="+usingHighway);
break;
//15.路线偏好Ex导航引导状态下,按规划原则重新规划路线
case14:
/
导航方式
0速度快
1费用少
2路程短
3不走高速
4躲避拥堵
5不走高速且避免收费
6不走高速且躲避拥堵
7躲避收费和拥堵
8不走高速躲避收费和拥堵
/
inttype=0;
openMapOperation("androidauto://naviRoutePreferEx?sourceApplication="+appName+"&type="+type);
break;
//16.取消导航退出导航引导状态,回主图
case15:
openMapOperation("androidauto://naviExit?sourceApplication="+appName);
break;
//17.退出高德地图车机版退出高德地图车机版应用
case16:
openMapOperation("androidauto://appExit?sourceApplication="+appName);
break;
//18.打开收藏夹打开“管理收藏夹”界面
case17:
openMapOperation("androidauto://openFavorite?sourceApplication="+appName);
break;
}
}
/
启动地图操作
@paramurl
/
privatevoidopenMapOperation(Stringurl){
Intentintent=newIntent("android.intent.action.VIEW",
android.net.Uri.parse(url));
intent.setPackage("com.autonavi.amapauto");
intent.addCategory("android.intent.category.DEFAULT");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
}
最终实现的效果就是这个样子了
我只是把官网的api统一一下而已,并没有什么技术含量,只是为了方便自己以后调用而已,嘻嘻,有兴趣的可以观摩一下
|
|