vue移动端app调用百度地图实现简单定位
最近做毕业设计做了一个手机定位的小功能,在此记录下来,我这个定在在电脑上进行测试是没有权限的,只有在手机上测试才能拿到具体的地理位置。第一步先是建立一个map.js文件,用来引入和暴露百度地图的组件,具体内容如下:export function MP(ak) {return new Promise(function (resolve, reject) {window.o...
·
最近做毕业设计做了一个手机定位的小功能,在此记录下来,我这个定在在电脑上进行测试是没有权限的,只有在手机上测试才能拿到具体的地理位置。
第一步先是建立一个map.js文件,用来引入和暴露百度地图的组件,具体内容如下:
export function MP(ak) { return new Promise(function (resolve, reject) { window.onload = function () { resolve(BMap) } var script = document.createElement("script"); script.type = "text/javascript"; script.src = "http://api.map.baidu.com/api?v=2.0&ak="+ak+"&callback=init"; script.onerror = reject; document.head.appendChild(script); }) }
第二步是在需要定位的页面引入mp
import {MP} from '../../service/map.js'
第三步就是 开始定位拿到地理位置
addressDetail(){ //获取地理位置 var vm = this; if (!vm.now){ return } //全局的this在方法中不能使用,需要重新定义一下 var geolocation = new BMap.Geolocation(); var gc = new BMap.Geocoder(); geolocation.getCurrentPosition( function(r) { //定位结果对象会传递给r变量 if(this.getStatus() == BMAP_STATUS_SUCCESS) { //通过Geolocation类的getStatus()可以判断是否成功定位。 var pt = r.point; gc.getLocation(pt, function(rs){ var addComp = rs.addressComponents; //这里弹出的便是定位的地理位置 alert(addComp.province + addComp.city + addComp.district + addComp.street + addComp.streetNumber); vm.now = false //这里把位置存在session里面就可以在后面用了 sessionStorage.setItem("dAddress",addComp.province + addComp.city + addComp.district + addComp.street + addComp.streetNumber) }); } else { //关于状态码 //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 新增) switch( this.getStatus() ) { case 2: alert( '位置结果未知 获取位置失败.' ); break; case 3: alert( '导航结果未知 获取位置失败..' ); break; case 4: alert( '非法密钥 获取位置失败.' ); break; case 5: alert( '对不起,非法请求位置 获取位置失败.' ); break; case 6: alert( '对不起,当前 没有权限 获取位置失败.' ); break; case 7: alert( '对不起,服务不可用 获取位置失败.' ); break; case 8: alert( '对不起,请求超时 获取位置失败.' ); break; } } }, {enableHighAccuracy: true}) },最后说明,只有在手机上才能拿到地理位置,电脑上会弹出没有权限
更多推荐
已为社区贡献7条内容
所有评论(0)