利用百度地图获取用户当前位置IP,并跳转百度地图导航
程序员文章站
2022-06-11 20:45:08
...
一,获取当前用户位置经纬度
注:第一步和第二步必须有
<!--第一步--><script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=你的ak密匙"></script>
<!--第二步--><div id="allmap"></div>
<script language="javascript">
// 百度地图API功能
var map = new BMap.Map("allmap");
var point = new BMap.Point(116.331398,39.897445);
map.centerAndZoom(point,12);
var geolocation = new BMap.Geolocation();
geolocation.getCurrentPosition(function(r){
if(this.getStatus() == BMAP_STATUS_SUCCESS){
var mk = new BMap.Marker(r.point);
map.addOverlay(mk);
map.panTo(r.point);
alert('您的位置:'+r.point.lng+','+r.point.lat);
window.location.href = "http://api.map.baidu.com/direction?origin=latlng:"+r.point.lng+","+r.point.lat+"|name:您当前位置&desti"+
"nation=name:龙门洗车客栈|latlng:37.8565359152,112.6318703268&mode=driving®ion=太原&output=html&src=yourCompanyName|yourAppName";
}
else {
alert('failed'+this.getStatus());
}
},{enableHighAccuracy: true})
//关于状态码
//BMAP_STATUS_SUCCESS 检索成功。对应数值“0”。
//BMAP_STATUS_CITY_LIST 城市列表。对应数值“1”。
//BMAP_STATUS_UNKNOWN_LOCATION 位置结果未知。对应数值“2”。
//BMAP_STATUS_UNKNOWN_ROUTE 导航结果未知。对应数值“3”。
//BMAP_STATUS_INVALID_KEY 非法**。对应数值“4”。
//BMAP_STATUS_INVALID_REQUEST 非法请求。对应数值“5”。
//BMAP_STATUS_PERMISSION_DENIED 没有权限。对应数值“6”。(自 1.1 新增)
//BMAP_STATUS_SERVICE_UNAVAILABLE 服务不可用。对应数值“7”。(自 1.1 新增)
//BMAP_STATUS_TIMEOUT 超时。对应数值“8”。(自 1.1 新增)
</script>
在使用以上代码的过程中,需要由自己的一个**,如果您没有,那就需要申请一个了,地址:http://lbsyun.baidu.com/。
将AK写入代码中,必须是写在你设置的被允许的域名或者IP白名单里的项目上你的AK才有效。
注意:必须配置IP白名单,不配置是获取不到用户经纬度的。
二、百度地图公交、驾车、步行导航
导航接口为
使用实例将参数跟在a链接后面直接跳转:
window.location.href = "http://api.map.baidu.com/direction?origin=latlng:"+r.point.lng+","+r.point.lat+"|name:您当前位置&desti"+
"nation=name:龙门洗车客栈|latlng:37.8565359152,112.6318703268&mode=driving®ion=太原&output=html&src=yourCompanyName|yourAppName";
http://api.map.baidu.com/direction //PC&Webapp服务地址
参数名称 | 参数说明 | 是否必选 | 备注 |
---|---|---|---|
origin | 起点名称或经纬度,或者可同时提供名称和经纬度,此时经纬度优先级高,将作为导航依据,名称只负责展示。 | 必选 | 1、名称:* 2、经纬度:39.98871<纬度>,116.43234<经度>。 3、名称和经纬度:name:*|latlng:39.98871,116.43234 |
destination | 终点名称或经纬度,或者可同时提供名称和经纬度,此时经纬度优先级高,将作为导航依据,名称只负责展示。 | 必选 | 同上 |
mode | 导航模式,固定为transit、driving、walking,分别表示公交、驾车和步行 | 必选 | |
region | 城市名或县名 | 当给定region时,认为起点和终点都在同一城市,除非单独给定起点或终点的城市。 | |
origin_region | 起点所在城市或县 | 同上 | |
destination_region | 终点所在城市或县 | 同上 | |
output | 表示输出类型,web上必须指定为html才能展现地图产品结果。 | 必选 | 手机客户端忽略此参数 |
coord_type | 坐标类型,可选参数 | 可选 | 默认为bd09经纬度坐标。允许的值为bd09ll、bd09mc、gcj02、wgs84。bd09ll表示百度经纬度坐标,bd09mc表示百度墨卡托坐标,gcj02表示经过国测局加密的坐标,wgs84表示gps获取的坐标 |
zoom | 展现地图的级别,默认为视觉最优级别。 | 可选 | |
src | 调用来源,规则:companyName|appName。 | 必选 |
三、微信消息封装
注:第三步是微信消息,根据自己的需求拼接经纬度
根据上述消息,当收到微信地理地位坐标消息时,直接拼接出公交、驾车、步行的url,并将相应的url填在图文消息的链接中。
代码如下所示:
上一篇: AS 中安装插件及常用插件
下一篇: Oracle基础教程:书写简易SQL