前言 (一)在当今这个瞬息万变的数字化时代,导航技术已经深入到我们生活的方方面面,从日常出行到物流配送,再到应急救援,无不彰显其重要性。 随着智能手机和物联网技术的飞速发展,对于导航系统的需求不再仅仅局限于简单的路线指引,而是更加追求精准性、实时性和智能化。在此背景下,将高德导航的路径规划算法高效应用于单片机系统及移动APP中,不仅是对传统导航技术的一次革新,更是推动智慧城市、智能交通系统建设的关键一环。 (二)单片机,作为嵌入式系统的核心,凭借其体积小、功耗低、集成度高等特点,在车载设备、智能家居、工业自动化等领域发挥着不可替代的作用。 将高德导航的路径规划功能集成到单片机上,意味着可以实现更为紧凑、低功耗的导航解决方案,为车辆自主导航、无人机路径规划等应用场景提供强有力的技术支持。这不仅要求算法在保持高精度的同时,还需进行深度优化以适应单片机有限的计算资源和存储能力。 (三)所以本文将给大家分享一下,我将高德开放平台的导航、路径规划功能运用到单片机及APP上,从而可以快速开发导航类、规划类的项目。当然方法有非常多种,我本次分享的仅仅是高德的冰山一角,高德提供的API,甚至可以让单片机不需要APP支持,独立运行导航、路径规划等项目 本文末尾,有项目所有代码的下载地址 效果展示 (一)APP展示 由于是快速开发,所以没有任何美化,仅是实现功能。APP开发平台:App Inventor 图:设定目的地后,会自动规划最近的路线,然后实时定位导航 (二)单片机展示 单片机:ESP32 图:APP开始导航后,将导航信息发送到ESP32 项目大纲 APP设定目的地→→地理编码API→→APP定位经纬度→→坐标转换API→→路径规划API→→APP显示静态图→→提交单片机显示 为了不泄露信息,最好对高德API进行封装,然后通过自己的API来操作。同时APP和单片机的通信也用到API。http://api.xemowo.top (一)获取高德开放平台API ①路径规划API:https://lbs.amap.com/api/webservice/guide/api/direction 对步行、公交路径规划,返回从原地到目的地的信息(方向,距离,时间,步行指示等) ②地理编码API:https://lbs.amap.com/api/webservice/guide/api/georegeo 将地址信息,转化为经纬度等信息。如:中山市港口镇政府,返回信息:"location" :"113.384324,22.584733" ③坐标转换API:https://lbs.amap.com/api/webservice/guide/api/convert 将用户输入的非高德坐标(GPS坐标、mapbar坐标、baidu坐标)转换成高德坐标。 ④静态地图:https://lbs.amap.com/api/webservice/guide/api/staticmaps 项目可以不用静态地图,因为路径规划API也会返回带有标记的静态图 (二)封装API(因人而异,后面我会放出PHP源码) ①地址查询经纬度:http://api.xemowo.top/api/gaode/chaxun.php 文档:http://api.xemowo.top/api/chaxun.html ②坐标转换:http://api.xemowo.top/api/gaode/gps.php 文档:http://api.xemowo.top/api/GPS.html ③路径规划:http://api.xemowo.top/api/gaode/walk.php 文档:http://api.xemowo.top/api/walk.html ④单片机接收信息:http://api.xemowo.top/api/gaode/esp_walk.php 文档:http://api.xemowo.top/api/esp_walk.html (三)制作APP App Inventor,Android编程工具https://www.17coding.net/ 采用图形化积木式的拖放组件,完全在线开发的Android编程环境,无需复杂的软件安装,可以通过浏览器直接访问并进行编程。 (四)单片机编程 Arduino IDE,内置很多库函数,对编程极其方便,速成项目,并且资料很多,对初学者帮助非常大 高德API (一)注册高德开放平台的账号https://lbs.amap.com/ (二)应用管理----创建新应用 (三)添加key,选择web服务(请勿泄露key) (四)寻找所需的API,本期项目我们需要4个高德API 注意个人用户调用的限量,企业用户会多一些,超过限量可能被禁止使用 ①路径规划API:https://lbs.amap.com/api/webservice/guide/api/direction 对步行、公交路径规划,返回从原地到目的地的信息(方向,距离,时间,步行指示等) ②地理编码API:https://lbs.amap.com/api/webservice/guide/api/georegeo 将地址信息,转化为经纬度等信息。如:中山市港口镇政府,返回信息:"location" :"113.384324,22.584733" ③坐标转换API:https://lbs.amap.com/api/webservice/guide/api/convert 将用户输入的非高德坐标(GPS坐标、mapbar坐标、baidu坐标)转换成高德坐标。 ④静态地图:https://lbs.amap.com/api/webservice/guide/api/staticmaps 项目可以不用静态地图,因为路径规划API也会返回带有标记的静态图 制作API 搭建API(网站)需要一台服务器,并且需要开发环境 我这里的环境如下: 系统:Orange Pi 1.0.2 Jammy (aarch64) WEB平台:OpenResty PHP:PHP-72 域名:API.XEMOWO.TOP (一)坐标转换API (http://api.xemowo.top/api/GPS.html) 示例:http://api.xemowo.top/api/gaode/gps.php?gps=113.38472,22.59476&photo=0 php error_reporting ( 0 ) ; //屏蔽报错 $photo=$_GET ; $gps=$_GET ; if ($gps== "" ){exit( "GPS地址为空" );} $apiKey = 'xxxxxxxxxxxxxxxxxxx' ; //高德API密钥 $html = file_get_contents( "https://restapi.amap.com/v3/assistant/coordinate/convert?locations=" .$gps. "&coordsys=gps&output=json&key=" .$apiKey. "" ); //高德坐标转换 $arr = json_decode($html, true ); // 将获取到的 JSON 数据解析成数组 $status = $arr ; $info = $arr ; $infocode = $arr ; $locations = $arr ; //https://restapi.amap.com/v3/staticmap?location=".$gps."&zoom=15&size=400*400&markers=mid,,A:".$gps."&key=".$apiKey." if ($photo == 1 ) { // 构建图片URL $gps=$_GET ; if ($gps== "" ){exit( "GPS地址为空" );} $apiKey = 'xxxxxxxxxxxxxxxxxxx' ; $ip = $location; $savePath = 'gps_map.png' ; // 例如 'images/map.png' $imageUrl = "https://restapi.amap.com/v3/staticmap?location=" .$locations. "&zoom=15&size=400*400&markers=mid,,A:" .$locations. "&key=" .$apiKey. "" ; // 使用file_get_contents获取图片内容 $imageContent = file_get_contents($imageUrl); // 使用file_put_contents将图片内容保存到文件 $saveResult = file_put_contents($savePath, $imageContent); $map = file_get_contents( "http://api.xemowo.top/api/gaode/gps_map.png" ); //保存图片 // 将图像数据转换为 Base64 编码 $base64 = base64_encode($map); // 嵌入到 img 标签中 echo '