百度地图有个坐标识取系统:https://api.map.baidu.com/lbsapi/getpoint/index.html,打开链接如下:
如上图,可以搜索某一个位置,然后会出现该位置的许多选择,选择一个就会显示出对应的百度地图的坐标(不是GPS坐标),这是通过地图上的位置来获取百度地图坐标,反过来,也可以通过百度地图的坐标来获取对应的位置,勾选 “坐标反查”,然后在输入框中输入百度地图坐标即可,如下:
输入的格式为,先输入经度,然后是英文的逗号,然后是纬度。
在Android设备中定位到的GPS坐标,假如:
- 经度为:113.30314166666668
- 纬度为:23.130165
这是GPS坐标,不是百度地图的坐标,所以如果放到百度地图上查询位置的话是不对的,所以需要先把GPS坐标转换为百度地图的坐标,百度地图开放平台提供了相应的转换API:https://lbsyun.baidu.com/faq/api?title=webapi/guide/changeposition-base,截图如下:
如上图,有示例请求url,需要注意的是,对于model
参数,我们要填2,表示gps
转bd09II
,即gps
坐标转百度地图的坐标,它还有其它的坐标系转换,比如腾讯地图坐标转百度地图坐标,百度地图坐标转腾讯地图坐标等。另外它还需要一个ak
参数,在申请这个ak的时候,应用类型我们选 “浏览器端” 即可(不要选Android,这个类型的用不了),然后在 “Referer白名单” 中输入一个星号即可,如下:
另外,我们公司的一个视频项目是把定位到的坐标显示到视频水印上,测试说设备位置到没变,坐标显示老是变,这也很正常啊,GPS定位是有偏差的,所以不同时间定位到的坐标不一定相同,但是偏差不大,得到的坐标基本上都是GPS设备所处位置的符近,但是测试说怕客户问他一直变不知道怎么解释。问了一下ChatGPT,提到GPS坐标保留小数5~7位就能提供较为精确的位置信息了,我测试了一下保留6位,确实位置跟原来差别非常小,所以可以设置只显示6位小数,这样看到的坐标变动应该会更少一些。