vue-baidu-map 进入页面自动定位的解决方案(推荐)


Posted in Javascript onApril 28, 2018

写在前面:我只是一个前端小白,文章中的提到可能会有不足之处,仅提供一个参考。若有不完善的地方,欢迎各位大佬指出!,希望对你有帮助!

好了,入正题。其实之前也被这问题困扰过,在网上也查了一番,没找到解决方法。直到今天,在GitHub 冒昧地向大佬提了一个 issue,才点醒了我。其实是因为太过急功近利了,没有认真阅读 vue-baidu-map 提供参考文档,也有可能是看过然后忘记了!

首先要明确一点(文档原话):由于百度地图 JS API 只有 JSONP 一种加载方式,因此 BaiduMap 组件及其所有子组件的渲染只能是异步的。因此,请使用在组件的 ready 事件来执行地图 API 加载完毕后才能执行的代码,不要试图在 vue 自身的生命周期中调用 BMap 类,更不要在这些时机修改 model 层。

错误用法

 我试过,以上这种方法好像是可行,效果可以出来,但我们最好采用作者提供的正确方法!

正确用法

 推荐这种方法!那下面解决进入页面自动定位的方法也是在这里。

 下面是我的写法,仅供参考,有不足请指出,我只是一个小白,哈哈!

Template:

<template>
  <baidu-map class="map" :center="center" :zoom="zoom" @ready="handler" @load="loadding" :scroll-wheel-zoom="true"
    :mapStyle="{styleJson: styleJson}">
    <bm-geolocation anchor="BMAP_ANCHOR_BOTTOM_RIGHT" :showAddressBar="false" :autoLocation="true"
      :locationIcon="{url: require('../../svg/location.svg'), size: {width: 18, height: 18}}" 
      @locationSuccess="getLoctionSuccess" @locationError="getLocationError">
    </bm-geolocation>
    <!-- 自定义定位图标覆盖物 -->
    <bm-marker :position="autoLocationPoint"
      :icon="{url: require('../../svg/location.svg'), size: {width: 18, height: 18}}" v-if="initLocation">
    </bm-marker>
  </baidu-map>
</template>

JS实现:

<script>
  export default {
    data () {
      return {
        // 省略一部分
        autoLocationPoint: {lng: 0, lat: 0},
        initLocation: false,
      }
    },
    methods: {
      handler ({BMap, map}) {
        let _this = this;  // 设置一个临时变量指向vue实例,因为在百度地图回调里使用this,指向的不是vue实例;
        var geolocation = new BMap.Geolocation();
        geolocation.getCurrentPosition(function(r){
          console.log(r);
          _this.center = {lng: r.longitude, lat: r.latitude};   // 设置center属性值
          _this.autoLocationPoint = {lng: r.longitude, lat: r.latitude};   // 自定义覆盖物
          _this.initLocation = true; 
          console.log('center:', _this.center)  // 如果这里直接使用this是不行的
        },{enableHighAccuracy: true})

        // 下面注释是百度地图API官方实现方法,因为我使用自定义图标覆盖物,所以没有使用这种方法!
        // 如使用以下这种方法,那么我Template里所写的自定义定位图标代码是不需要的
        // 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());
        // }
        // },{enableHighAccuracy: true})
      }
    }
  }
</script>

如果是直接复制代码的朋友请注意,要有选择的复制,因为我没有把全部代码贴出了,直接复制到你的项目是会出问题的!不过这代码比较简单,稍微就能看懂,哈哈!

以上所述是小编给大家介绍的vue-baidu-map 进入页面自动定位的解决方案,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript 图片上一张下一张链接效果代码
Mar 12 Javascript
基于jquery的无限级联下拉框js插件
Oct 29 Javascript
js使用removeChild方法动态删除div元素
Aug 01 Javascript
js获取Html元素的实际宽度高度的方法
May 19 Javascript
AngularJs Injecting Services Into Controllers详解
Sep 02 Javascript
EasyUI学习之DataGird分页显示数据
Dec 29 Javascript
JS通过调用微信API实现微信支付功能的方法示例
Jun 29 Javascript
本地存储localStorage用法详解
Jul 31 Javascript
vue.js项目打包上线的图文教程
Nov 16 Javascript
JS原生带缩略图的图片切换效果
Oct 10 Javascript
Javascript前端下载后台传来的文件流代码实例
Aug 18 Javascript
js+canvas绘制图形验证码
Sep 21 Javascript
Vue2.0实现调用摄像头进行拍照功能 exif.js实现图片上传功能
Apr 28 #Javascript
React native ListView 增加顶部下拉刷新和底下点击刷新示例
Apr 27 #Javascript
React Native日期时间选择组件的示例代码
Apr 27 #Javascript
vue实现点击展开点击收起效果
Apr 27 #Javascript
vue中post请求以a=a&amp;b=b 的格式写遇到的问题
Apr 27 #Javascript
vue项目中应用ueditor自定义上传按钮功能
Apr 27 #Javascript
Vue 使用 Mint UI 实现左滑删除效果CellSwipe
Apr 27 #Javascript
You might like
解析PHP处理换行符的问题 \r\n
2013/06/13 PHP
php中FTP函数ftp_connect、ftp_login与ftp_chmod用法
2014/11/18 PHP
通过修改Laravel Auth使用salt和password进行认证用户详解
2017/08/17 PHP
JavaScript回调(callback)函数概念自我理解及示例
2013/07/04 Javascript
Jquery对象和Dom对象的区别分析
2014/11/20 Javascript
JavaScript定时显示广告代码分享
2015/03/02 Javascript
Jquery easyui 实现动态树
2015/11/17 Javascript
jQuery简单验证上传文件大小及类型的方法
2016/06/02 Javascript
axios学习教程全攻略
2017/03/26 Javascript
JS实现的四级密码强度检测功能示例
2017/05/11 Javascript
JavaScript简单实现关键字文本搜索高亮显示功能示例
2018/07/25 Javascript
JavaScrip数组去重操作实例小结
2019/06/20 Javascript
vue实现用户长时间不操作自动退出登录功能的实现代码
2020/07/23 Javascript
JS JQuery获取data-*属性值方法解析
2020/09/01 jQuery
pycharm 使用心得(一)安装和首次使用
2014/06/05 Python
Python中的is和id用法分析
2015/01/26 Python
Python IDE PyCharm的基本快捷键和配置简介
2015/11/04 Python
对pandas的算术运算和数据对齐实例详解
2018/12/22 Python
Python的垃圾回收机制详解
2019/08/28 Python
python画蝴蝶曲线图的实例
2019/11/21 Python
python批量检查两个对应的txt文件的行数是否一致的实例代码
2020/10/31 Python
利用纯html5绘制出来的一款非常漂亮的时钟
2015/01/04 HTML / CSS
浅谈HTML5 Web Worker的使用
2018/01/05 HTML / CSS
施华洛世奇德国官网:SWAROVSKI德国
2017/02/01 全球购物
中国网上药店领导者:1药网
2017/02/16 全球购物
小学生检讨书大全
2014/02/06 职场文书
股权转让意向书
2014/04/01 职场文书
初中学校对照检查材料
2014/08/19 职场文书
党的群众路线教育实践活动先进个人材料
2014/12/24 职场文书
领导干部失职检讨书
2015/05/05 职场文书
2016教师给学生的毕业寄语
2015/12/04 职场文书
2016年党员干部公开承诺书
2016/03/24 职场文书
2016年小学“我们的节日·中秋节”活动总结
2016/04/05 职场文书
创业计划书之儿童理发店
2019/09/27 职场文书
golang 实用库gotable的具体使用
2021/07/01 Golang
JavaScript 对象创建的3种方法
2021/11/17 Javascript