一:简介
七夕节在配送过程中,发现配送员由于文化有限,在使用导航软件上有极大的障碍。这不仅拖慢了整个配送过程,也不利于业务的增长。于是我想到了,在订单上打印一个二维码,扫描二维码,则就可以导航到收货地点。
在一段时间的尝试后,我敲定了此方案的可行性。
由于美图和饿了么订单打印,已在飞鹅打印机上固定了模板,我无法修改他们的打印模板。所以,只能为小程序的订单,打印地址二维码。
二:方案
由于各个地图公司都没有提供直接的接口,让地图转为二维码,所以退而求其次,需要先将地址转为url,进入这个url可以进入地图界面,然后将url转为二维码。
2.1 地图转url
- 百度地图方案
在查看了几个地图技术文档后,我找到了百度地图的接口。
地址:http://lbsyun.baidu.com/index.php?title=uri/api/web
此接口提供了免费的调起地图的url方案。由于我们只能拿到收货地址,所以可以使用下面的接口
服务地址
1 | http://api.map.baidu.com/geocoder //PC&Webapp服务地址 |
示例
1 | http://api.map.baidu.com/geocoder?address=北京市海淀区上地信息路9号奎科科技大厦&output=html&src=webapp.baidu.openAPIdemo |
打开后的页面
2
- 高德地图方案
高德地图提供Web调起地图的接口格式如下:
1 | https://uri.amap.com/marker?position=116.473195,39.993253 |
url参数:
参数名称 | 值(点击可编辑) | 参数说明 | 是否必选 | 备注 |
---|---|---|---|---|
position | 116.473195,39.993253 | 位置点经纬度坐标,格式为: position=lon,lat | 是 | lon表示经度,lat表示纬度 |
name | 首开广场 | 用户自定义显示名称 | 否 | |
src | mypage | 使用方来源信息 | 否 | 为保证服务质量建议填写 |
coordinate | gaode | 坐标系参数coordinate=gaode,表示高德坐标(gcj02坐标),coordinate=wgs84,表示wgs84坐标(GPS原始坐标) | 否 | 默认为高德坐标系(gcj02坐标系) |
callnative | 0 | 是否尝试调起高德地图APP并在APP中查看,0表示不调起,1表示调起, 默认值为0 | 否 | 该参数仅在移动端有效 |
和百度地图不同的是,这个接口不提供类似搜索功能的接口方式,其中经纬度为必填项,因此,我们必须将订单地址,先调用高德的地理名称转经纬度api,在调用此接口。
详细的地理编码api参见:https://lbs.amap.com/api/webservice/guide/api/georegeo/
通过上述两个api获取,地址的链接,详细php函数如下:
1 | /** |
对比高德地图和百度地图。百度地图在编程方面更加方便,但是对于扫描二维码体验而言,百度地图必须使用浏览器扫描,或者微信扫描后根据提示打开浏览器,然后由浏览器调起百度地图进入导航。直接使用百度地图扫描二维码是无法调出导航的,而且百度地图扫描功能隐藏在搜索框之中,使用非常不方便。相对而言,用户使用高德地图api生成的二维码使用高德地图首页的扫一扫功能,可以直接进入导航界面。
2.2 url转二维码
在网上能找到许多提供url转二维码的api接口。
在简书https://www.jianshu.com/p/064ab5c811cf 里,提供了许多接口。
由于飞鹅打印机的技术文档中说明了,只需要在打印时在<QR>标签中输入url即可自动转换,所以,不在需要使用额外的接口。
⭐但是需要注意的是,通过get来获取url二维码,必须先使用url_encode将url编码,否则二维码中将丢失url的参数信息。