高德地图车机版API演示程序

高德地图车机版API演示程序


做车载的应该和这个程序打交道打的比较多吧,这里是我今天写的一个实现了他的API的一个演示程序

首先我们来看下他的官网、

相对于其他的api来说,这个api已经相对挺完善的,如果想使用这个车机版地图,你需要去下载一些资源包,放在对应的位置然后联网激活,这些就不详细的说明了

概述

高德地图车机版(amap auto)第三方调用API是为整车厂、前后装主机厂、系统方案商、开发者等,提供的在自己系统或应用中调用高德地图车机版功能的一套方法。调用方可以根据业务需求,调用POI搜索、路线规划、地图操控、导航等功能,充分提升和完善系统及应用的车载体验。

适用环境

Android 车机网页端或车机应用App

支持版本

支持 Android 高德地图车机版 App V1.1.0 及以上版本

术语约定

Intent 调用:Android 平台术语,指代第三方应用调用高德地图车机版 Android 客户端的方式

我们主要来看下我们的程序,他只有一个ListView,所有我们的程序layout应该是:

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    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">

    <ListView
        android:id="@+id/mListView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</LinearLayout>

我们的主程序就更好说话了

MainActivity

package com.liuguilin.com.amapsample;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import java.util.ArrayList;
import java.util.List;

/**
 * 高德车机版API演示程序
 * 官网:http://lbs.amap.com/api/amapauto/#id004
 * by刘桂林
 */
public class MainActivity extends AppCompatActivity {

    //TAG
    private static final String TAG = "AMapSample";
    //列表
    private ListView mListView;
    //适配器
    private ArrayAdapter<String> adapter;
    //数据
    private List<String> mList;
    //应用名称
    private String appName;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initData();
        initView();
    }

    /**
     * 初始化数据 / 便于扩展
     */
    private void initData() {
        mList = new ArrayList<>();
        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.打开收藏夹");
    }

    /**
     * 初始化
     */
    private void initView() {
        //程序名
        appName = getString(R.string.app_name);
        Log.i(TAG, "appName:" + appName);
        mListView = (ListView) findViewById(R.id.mListView);
        adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mList);
        mListView.setAdapter(adapter);
        mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                parsing(i);
            }
        });
    }

    /**
     * 操作
     *
     * @param i
     */
    private void parsing(int i) {
        Log.i(TAG, "position:" + i);
        switch (i) {
            //1.进入主图 进入高德地图车机版主图页面
            case 0:
                openMapOperation("androidauto://rootmap?sourceApplication=" + appName);
                break;
            //2.显示我的位置 显示当前车位
            case 1:
                openMapOperation("androidauto://myLocation?sourceApplication=" + appName);
                break;
            //3.路线规划 输入起点和终点,计算驾车线路。支持按偏好规划路线
            case 2:
                //起点纬度
                double slat = 36.2;
                //起点经度
                double slon = 116.1;
                //起点名称
                String sname = "abc";
                //终点纬度
                double dlat = 36.3;
                //终点经度
                double dlon = 116.2;
                //终点名称
                String dname = "def";
                /**
                 * 起终点是否偏移
                 * 0:lat 和 lon 是已经加密后的,不需要国测加密;
                 * 1:需要国测加密
                 */
                int dev = 0;
                /**
                 * 驾车方式
                 =0(速度快)
                 =1(费用少)
                 =2(路程短)
                 =3 不走高速
                 =4(躲避拥堵)
                 =5(不走高速且避免收费)
                 =6(不走高速且躲避拥堵)
                 =7(躲避收费和拥堵)
                 =8(不走高速躲避收费和拥堵)
                 */
                int m = 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 名称,得出该点的经纬度坐标
            case 3:
                String addr = "深圳世界之窗";
                openMapOperation("androidauto://viewGeo?sourceApplication=" + appName + "&addr=" + addr);
                break;
            //5.通过经纬度 给定经纬度坐标,得出相应的 POI 地址名称
            case 4:
                double lat = 39.9;
                double lon = 116.48;
                //起终点是否偏移(0:lat和lon是已经加密后的,不需要国测加密; 1:需要国测加密)
                int dev4 = 0;
                openMapOperation("androidauto://viewReGeo?sourceApplication=" + appName + "&lat=" + lat + "&lon=" + lon + "&dev=" + dev4);
                break;
            //6.搜索地点 搜索周边的超市、银行、加油站等分类信息。
            case 5:
                //搜索POI的关键字,如银行、加油站
                String keywords = "电影院";
                //起终点是否偏移(0:lat和lon是已经加密后的,不需要国测加密;1:需要国测加密)
                int dev5 = 0;
                //这里官网提供了两种方式,经纬度和兴趣点,有兴趣的可以自己去官网
                openMapOperation("androidauto://poi?sourceApplication=" + appName + "&keywords=" + keywords + "&dev=" + dev5 + "Wod");
                break;
            //7. 关键字导航 根据名称,启动高德地图车机版搜索终点,选择终点后开始启动导航。
            case 6:
                //搜索关键字
                String keywords6 = "方恒国际中心";
                /**
                 * 导航方式
                 0 速度快
                 1 费用少
                 2 路程短
                 3 不走高速
                 4躲避拥堵
                 5不走高速且避免收费
                 6不走高速且躲避拥堵
                 7躲避收费和拥堵
                 8不走高速躲避收费和拥堵
                 */
                int style = 2;
                openMapOperation("androidauto://keywordNavi?sourceApplication=" + appName + "&keywords=" + keywords6 + " &style=" + style);
                break;
            //8. 周边分类 搜索周边的超市、银行、加油站等分类信息
            case 7:
                String keywords7 = "银行";
                //dev照旧
                //官网提供两种方式
                openMapOperation("androidauto://arroundpoi?sourceApplication=" + appName + "&keywords=" + keywords7 + "&dev=0");
                break;
            //9. 直接导航 输入终点,以用户当前车位为起点开始路线导航
            case 8:
                //POI 名称
                String poiname = "fangheng";
                //纬度
                double lat8 = 36.547901;
                //经度
                double lon8 = 104.258354;
                //dev和style照旧
                //貌似不需要action_view
                openMapOperation("androidauto://navi?sourceApplication=" + appName + "&poiname=" + poiname +
                        "&lat=" + lat8 + "&lon=" + lon8 + "&dev=1&style=2");
                break;
            //10. 地图标注 根据名称或经纬度,启动高德地图车机版展示一个标注点
            case 9:
                //POI 名称
                String poiname9 = "abc";
                //纬度
                double lat9 = 36.2;
                //经度
                double lon9 = 116.1;
                //dev照旧
                openMapOperation("androidauto://viewMap?sourceApplication=" + appName + "&poiname=abc&lat=" + lat9 + "&lon=" + lon9 + "&dev=0");
                break;
            //11. 地图操作 对地图进行操作,开关实时路况,缩放地图,切换视角。可组合
            case 10:
                /**
                 * 0 实时路况开
                 * 1实时路况关
                 */
                int traffic = 0;
                /**
                 * 0缩小地图
                 * 1放大地图
                 */
                int zoom = 1;
                /**
                 * 0切换2d车上
                 * 1切换2d北上
                 * 2切换3d车上支持
                 */
                int switchView = 2;
                openMapOperation("androidauto://mapOpera?sourceApplication=" + appName + "&traffic=" + traffic + "&zoom=" + zoom + "&switchView=" + switchView);
                break;
            //12. 特殊点导航 回家/公司
            case 11:
                /**
                 * home回家
                 * crop回公司
                 */
                String dest = "home";
                openMapOperation("androidauto://navi2SpecialDest?sourceApplication=" + appName + "&dest=" + dest);
                break;
            //13. 全程概览 进入或退出全程概览状态。仅在导航引导状态下响应
            case 12:
                /**
                 * 0 进入全览
                 * 1 退出全览
                 */
                int isShowPreview = 0;
                openMapOperation("androidauto://naviPreview?sourceApplication=" + appName + "&isShowPreview=" + isShowPreview);
                break;
            //14. 路线偏好 导航引导状态下,按偏好组合重新规划路线
            case 13:
                //躲避拥堵 0开; 1关
                int isAvoidJam = 0;
                //避免收费 0开; 1关
                int isVoidCharge = 0;
                //不走高速 0开; 1关
                int isAvoidHighway = 0;
                //高速优先 0开; 1关
                int usingHighway = 0;
                openMapOperation("androidauto://naviRoutePrefer?sourceApplication=" + appName +
                        "&isAvoidJam=" + isAvoidJam + "&isVoidCharge=" + isVoidCharge +
                        "&isAvoidHighway=" + isAvoidHighway + "&usingHighway=" + usingHighway);
                break;
            //15. 路线偏好Ex 导航引导状态下,按规划原则重新规划路线
            case 14:
                /**
                 * 导航方式
                 0 速度快
                 1 费用少
                 2 路程短
                 3 不走高速
                 4 躲避拥堵
                 5 不走高速且避免收费
                 6 不走高速且躲避拥堵
                 7 躲避收费和拥堵
                 8 不走高速躲避收费和拥堵
                 */
                int type = 0;
                openMapOperation("androidauto://naviRoutePreferEx?sourceApplication=" + appName + "&type=" + type);
                break;
            //16. 取消导航 退出导航引导状态,回主图
            case 15:
                openMapOperation("androidauto://naviExit?sourceApplication=" + appName);
                break;
            //17. 退出高德地图车机版 退出高德地图车机版应用
            case 16:
                openMapOperation("androidauto://appExit?sourceApplication=" + appName);
                break;
            //18. 打开收藏夹 打开“管理收藏夹”界面
            case 17:
                openMapOperation("androidauto://openFavorite?sourceApplication=" + appName);
                break;
        }
    }

    /**
     * 启动地图操作
     *
     * @param url
     */
    private void openMapOperation(String url) {
        Intent intent = new Intent("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统一一下而已,并没有什么技术含量,只是为了方便自己以后调用而已,嘻嘻,有兴趣的可以观摩一下

源码:http://download.csdn.net/detail/qq_26787115/9628289

可以加群聊聊:555974449

时间: 2024-10-21 06:34:33

高德地图车机版API演示程序的相关文章

利用高德地图官方提供的API实现模拟定位的功能

使用高德地图API需要申请一个开发者ID号以及我所用的相关资源:  http://pan.baidu.com/disk/home?fr=ibaidu 该文件夹中有一个官方文档,AMap_IOS_API_Guid,提供了使用方法供开发者参阅. 利用高德地图官方提供的API实现模拟定位的功能,布布扣,bubuko.com

【python】获取高德地图省市区县列表

项目中需要用省市区来进行检索,原想高德地图肯定会有API来获得这些数据,结果没有找到,有一个接口好像可以用,但是会附带大量的边界坐标点. 所以就不如自己把高德的省市区列表扒下来,自己写接口来完成这个功能. 看到高德地图的js的demo里面有这样的展示页面:http://lbs.amap.com/api/javascript-api/example/u/2001-2/,所以我就直接利用它来分析. 1. 省列表 省的列表是直接写死在这个界面里的,所以我也照搬,把省都直接写死: provinceLis

OpenERP|ODOO高德地图应用

发布时间:2015-04-06 11:01:37来源:http://www.chinamaker.net 在openerp中的fleet模块,每一个车辆都有地图应用.默认采用的是谷歌地图,但是在应用得时候如果想换其他的地图该怎么做那?以下我们以国内市 面上比较流行的高德地图为例,给大家分析一下如何换地图. 一,openerp的地图设计思路 openerp的地图应用是运用qweb来实现的.在xml中声明一个div,然后在js中初始化地图放到声明的div里即可.在js中会把这一系列的初 始化地图,加

【高德地图】逆地址解析 设置和应用

最近自己做了一个小程序,引用了高德地图的逆地址解析API,在此就相关设置和具体应用整理一下: 所谓的逆地址解析:通过经纬度解析出对应的位置. 第一步:要是用API 首先要申请key,页面展示如下: 1.输入key的名称 (起一个名字,便于识别,开发中没用到) 2.我选择的是浏览器 3.点击提交就会生成一个类似GCCBZ-7NMW6-HMOSD-EVWW3-WBN3Z-4XBLZ这样的密钥,请求时,赋值给key 第二步:查看高德地图API说明文档 请求示例:   response示例: 注意: 可

【高德地图API】汇润做爱地图技术大揭秘

昨日收到了高德地图微信公众号的消息推送,说有[一大波免费情趣用品正在袭来],点进去看了一眼,说一个电商公司(估计是卖情趣用品的)用高德云图制作了一张可以标记做爱地点与详情的地图.这不就是中国版的I just made love麽? 滑到屏幕底下,看了看阅读量,哇塞,居然有4万3!!!说明实在是有很多人关注做爱地图啊.本着研究地图的心情(绝对不是为了什么价值300的智能情趣用品!),我也就点击了[阅读原文]…… 好吧,为了证明我真的不是为了奖品,我会一边写活动步骤,一边揭秘其中的LBS技术.  

高德地图API INVALID_USER_SCODE问题以及keystore问题

今天这篇文章会给大家介绍三个问题: 1,接入API时出现invalid_user_scode问题 首先进行第一个大问题,接入高德地图API时出现invalid_user_scode问题 因为项目需要接入高德地图的API,在接入其它API时会出现类似问题,在进行定位的时候出现了下列问题 运行时log信息如下 可以看到,定位失败有两个原因: 1,错误代码为10,定位服务启动失败. 2,错误代码为7,key错误. 根据高德地图的官方使用文档的介绍,对相关问题进行处理 问题1:服务启动失败:检查清单配置

【高德地图API】从零开始学高德JS API(五)路线规划——驾车|公交|步行

先来看两个问题:路线规划与导航有什么区别?步行导航与驾车导航有什么区别? 回答: 1.路线规划,指的是为用户提供3条路线推荐.[高德]在提供路线规划的时候,会提供用户自定义路线规划功能,这是别家没有做到的.导航,指的是为驾车用户提示路口信息,向左向右,进入匝道等信息. 2.我们这里说的步行导航和驾车导航,严格的说,应该是路线规划.从A地到B地,如果是驾车,路线规划会将公路路网做为搜索数据:如果是步行,过街天桥.地下通道.人行道做为搜索数据. ---------------------------

高德地图JavaScript API开发研究

原文:高德地图JavaScript API开发研究 高德地图JavaScript API是一套用JavaScript 语言编写的应用程序接口,可以通过各种API接口向地图添加内容,创建功能丰富.交互性强的地图应用.高德地图JavaScript API 提供了大量的实用工具和富有特色的插件功能,并提供了搜索和路线规划等服务. 1.首先 2.然后 3.最后就是看官方文档开发 高德地图API使用介绍:http://lbs.amap.com/api/javascript-api/guide-2/map_

iOS 高德地图API不能定位及INVALID_USER_SCODE问题

一.在使用高德地图的API的时候,没有办法实现定位,在这里说一下在真机测试的时候出现没法定位应该注意的几点问题和解决方法. 1.将mapView添加到self.view上,[self.view addSubView:self.mapView]; 2.在plist文件中添加一个属性NSLocationAlwaysUsageDescription. 3.设置mapView的一个属性,self.mapView.showUserLocation = YES,这个属性一定要设置为YES. 4.设置mapV