百度地图获取经纬度的方式

一、JS API ip定位

let loc = new BMap.LocalCity();
loc.get(function (result) {
    cityName = result.name
    map.centerAndZoom(result.center, 12);
    map.panTo(result.center);
    mk = new BMap.Marker(result.center);
    map.addOverlay(mk);
});

二、Web API 普通ip定位

$.ajax({
    type: "GET",
    url: "https://api.map.baidu.com/location/ip?ak=u08X9I4Ix3q0iG7gaj1IeAxHfh9gcHtB&coor=bd09ll",
    dataType: "jsonp",
    success: function (result) {
        console.log(result);
        if(result.status === 0) {
            let point = new BMap.Point(result.content.point.x, result.content.point.y)
            mk = new BMap.Marker(point);
            map.addOverlay(mk);
            map.centerAndZoom(point, 12);
            map.panTo(point);
        }else {
            console.log("请求失败")
        }
    }
});

三、原生api获取经纬度,再转换成百度系坐标系

let geo = navigator.geolocation
geo.getCurrentPosition((position) => {
    console.log(position);
    // 原生api获取的经纬度
    let lng = position.coords.longitude
    let lat = position.coords.latitude

    // 转换成百度系坐标在地图进行显示
    let ggPoint = new BMap.Point(lng, lat)
    let convertor = new BMap.Convertor();
    // 1代表GPS标准坐标(wgs84) 5代表百度地图采用的经纬度坐标(bd09ll)
    convertor.translate([ggPoint], 1, 5, function (data) {
        if (data.status === 0) {
            console.log(data.points[0]);
            mk = new BMap.Marker(data.points[0]);
            map.addOverlay(mk);
            map.centerAndZoom(data.points[0], 12);
            map.panTo(data.points[0]);
        }
    })
}, (err) => {
    // alert('失败' + JSON.stringify(err))
    console.log(err)
    if (err.code == 1) {
        return alert('用户拒绝页面发起的地理位置')
    }
    if (err.code == 2) {
        return alert('无法获取当前位置')
    }
    if (err.code == 3) {
        return alert('超时')
    }
    return alert('未知错误')
}, {
    enableHighAcuracy: true, //  是否启动高精模式(布尔值)
    maximumAge: 0, // 设置定位缓存过期的时间(毫秒,0为禁用缓存)
    timeout: 10000, // 设置获取定位信息的时常 (超时触发ErrorCallback)
})
});

除了上述方式,还有:

Web API

智能硬件定位(需要硬件设备,且麻烦)

JS API

浏览器定位
定位SDK辅助定位(项目需要同时有移动端)

另外,浏览器普遍定位不准确的问题,并且各浏览器之间结果也有所不同(可能是个人问题),距离偏差也各有不同,移动端不存在这些问题。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值