百度地图JavaScript API获取用户当前经纬度和详细地理位置,反之通过详细地理位置获取当前经纬度

摘要:
V=2.0&ak=yourkey“˃在页面中定义一个ID为allmap的DIV标记:避免以下情况:1UncaughtTypeError:Cannotreadproperty'gc'undefined通过SDK辅助定位获取坐标,然后获取当前用户的详细地址varmap=newBMap.Map;//创建Map实例。请注意,页面上必须有一个id为allmp的divvarpoint=newBMap。//创建一个坐标Map.centerAndZoom;//初始化地图,设置中心点坐标和地图级别vargeolocation=newBMapp.Geolocation();vargc=newBMap.Geocode();//创建地理编码器。//启用SDK辅助定位Geolocation.enableSDK Location() ; 地理位置。获取当前位置;通过浏览器定位获取当前经度和纬度:varmap=newBMap。地图varpoint=新BMap。指向地图中心和缩放;vargeolocation=新BMap。地理位置();地理位置。获取当前位置;IP位置以获取当前城市varmap=newBMap。地图varpoint=新BMap。指向地图中心和缩放;函数myFun{varcityName=result.name;map.setCenter;alert;}varmyCity=新BMap。LocalCity();我的城市。获取;通过详细的地理位置交换当前用户的经度和纬度坐标http://api.map.baidu.com/geocoder/v2/?

本文并非原创,原创地址为:https://www.cnblogs.com/Can-daydayup/p/10941470.html

前言:

  前段时间刚好使用了百度地图的js api定位获取用户当前经纬度并获取当前详细位置和通过当前用户详细地理位置换取用户当前经纬度坐标的功能,为了方便下次找起来方便一些自己在这里记录一下,希望也能够帮助到有需要的童鞋们!

解决方案:

引入JavaScript API v2.0 SDK

1
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=您的密钥"></script>

在页面中定义一个以ID为allmap的DIV标签:

<div id="allmap"></div>

避免页面中出现:

1
Uncaught TypeError: Cannot read property 'gc' of undefined

通过SDK 辅助定位获取坐标,然后在获取当前用户详细地址

复制代码
<script type="text/javascript">
    var map = new BMap.Map("allmap");//创建Map实例,注意页面中一定要有个id为allmp的div
    var point = new BMap.Point(116.331398,39.897445);//创建定坐标
    map.centerAndZoom(point,12);//// 初始化地图,设置中心点坐标和地图级别

    var geolocation = new BMap.Geolocation();
    var gc = new BMap.Geocoder();//创建地理编码器
    // 开启SDK辅助定位
    geolocation.enableSDKLocation();
    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);

            var pt = r.point;   
            map.panTo(pt);//移动地图中心点
            //alert(r.point.lng);//X轴
            //alert(r.point.lat);//Y轴 
 
            gc.getLocation(pt, function(rs){    
                var addComp = rs.addressComponents;
                //alert(addComp.city);
               alert(addComp.province + addComp.city + addComp.district + addComp.street + addComp.streetNumber);    
            });  

        }
        else {
            alert('failed'+this.getStatus());
        }        
    });
</script>
复制代码

通过浏览器定位获取当前经纬度:

复制代码
<script type="text/javascript">
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);
    }
    else {
        alert('failed'+this.getStatus());
    }        
});
</script>
复制代码

ip定位获取当前所在城市

复制代码
<script type="text/javasript">
var map = new BMap.Map("allmap");
var point = new BMap.Point(116.331398,39.897445);
map.centerAndZoom(point,12);

function myFun(result){
    var cityName = result.name;
    map.setCenter(cityName);
    alert("当前定位城市:"+cityName);
}
var myCity = new BMap.LocalCity();
myCity.get(myFun); 
</script>
复制代码

通过详细地理位置换取当前用户经纬度坐标

http://api.map.baidu.com/geocoder/v2/?address=长沙市&output=json&ak=您的密钥

我使用的是ajax请求数据,注意假如dataType为json时会出现跨域问题,最终我使用的是jsonp请求就解决了:

json和jsonp之间的区别:https://www.cnblogs.com/strugglion/p/5929821.html

复制代码
$.ajax({
url:"http://api.map.baidu.com/geocoder/v2/?address="+city+"&output=json&ak=您的密钥",
dataType:'jsonp',
processData: false, 
type:'get',
success:function(data){
console.log(data);
if (data.status==0) {
console.log("纬度:"+data.result.location.lat+"经度:"+data.result.location.lng);
}
},
error:function(XMLHttpRequest, textStatus, errorThrown) {
console.log(XMLHttpRequest.status);
console.log(XMLHttpRequest.readyState);
console.log(textStatus);
}});
复制代码

返回json格式的响应数据:

1
{"status":0,"result":{"location":{"lng":112.94547319535288,"lat":28.23488939994364},"precise":0,"confidence":12,"comprehension":100,"level":"城市"}}

免责声明:文章转载自《百度地图JavaScript API获取用户当前经纬度和详细地理位置,反之通过详细地理位置获取当前经纬度》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇frp(升级版)教程Oracle学习笔记—归档模式下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

百度地图api通过地址显示地图,白名单

百度地图api通过地址显示地图,白名单 http://developer.baidu.com/map/jsdemo.htm#i7_1?qq-pf-to=pcqq.c2c------------------------------------【百度地图API】如何进行地址解析与反地址解析?——模糊地址能搜索到精确地理信息! - 酸奶小妹 - 博客园http:...

vue2.x使用百度地图

在12月份之前在vue项目中使用百度地图我都是在index.html直接应用如下代码 <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=你的秘钥"></script> 然后直接在页面直接初始化地图即可,注意地图一定要设置宽和高。...

【百度地图API】JS版本的常见问题

【新手必读】API常见问题 1、请问如何将我的店铺标注在百度地图上?我是否可以做区域代理?在百度地图上标注是否免费? 答复: 这里只负责API的技术咨询,不解决任何地图标注问题。在百度地图上标注自己公司,即气泡标注业务。该业务已外包给青岛亿搜,不属于API技术范畴。全国商户的标注需求,请致电:合作伙伴“青岛亿搜网络科技有限公司”咨询。联系电话:0532-6...

免费的天气预报API谷歌,雅虎,中央气象台 转

  Google Weather API 只支持美国地区使用邮政编码进行查询,例如: http://www.google.com/ig/api?hl=zh-cn&weather=94043 (94043 为 山景城, 美国加州 的邮政编码) 而除了美国以外的地区需要使用经纬度坐标作为参数才能执行 Google Weather API, 例如: ht...

Cesium 坐标系转换

        cesium中常用的坐标有两种WGS84地理坐标系和笛卡尔空间坐标系(世界坐标)。我们平时常用的以经纬度来指明一个地点就是用的WGS84坐标,笛卡尔空间坐标系常用来做一些空间位置变换如平移旋转缩放等等。二者的联系如下图, 笛卡尔空间坐标的原点就是椭球的中心. 。        Pick----屏幕坐标   Cartesian----世界坐...

百度地图绘制行驶轨迹、折线上添加箭头、修改地图底色

页面代码 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="initial...