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在IE中“意外地调用了方法或属性访问”
Nov 19 Javascript
js hover 定时器(实例代码)
Nov 12 Javascript
showModelDialog弹出文件下载窗口的使用示例
Nov 19 Javascript
xmlhttp缓存清除的2种解决方法
Dec 13 Javascript
浅谈javascript中createElement事件
Dec 05 Javascript
两种JavaScript的AES加密方式(可与Java相互加解密)
Aug 02 Javascript
整理一下常见的IE错误
Nov 18 Javascript
详解微信小程序入门五: wxml文件引用、模版、生命周期
Jan 20 Javascript
Vue实现侧边菜单栏手风琴效果实例代码
May 31 Javascript
详解React服务端渲染从入门到精通
Mar 28 Javascript
vue3 watch和watchEffect的使用以及有哪些区别
Jan 26 Vue.js
详解Vue的七种传值方式
Feb 08 Vue.js
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
在smarty中调用php内置函数的方法
2013/02/07 PHP
PHP把数字转成人民币大写的函数分享
2014/06/30 PHP
Laravel框架学习笔记(二)项目实战之模型(Models)
2014/10/15 PHP
PHP的RSA加密解密方法以及开发接口使用
2018/02/11 PHP
JScript中的undefined和&quot;undefined&quot;的区别
2007/03/08 Javascript
javascript对下拉列表框(select)的操作实例讲解
2013/11/29 Javascript
js子页面获取父页面数据示例
2014/05/15 Javascript
jquery修改网页背景颜色通过css方法实现
2014/06/06 Javascript
判断日期是否能跨月查询的js代码
2014/07/25 Javascript
使用jquery 简单实现下拉菜单
2015/01/14 Javascript
JS+CSS实现滑动切换tab菜单效果
2015/08/25 Javascript
jquery.cookie实现的客户端购物车操作实例
2015/12/24 Javascript
AngularJS入门教程之双向绑定详解
2016/08/18 Javascript
郁闷!ionic中获取ng-model绑定的值为undefined如何解决
2016/08/27 Javascript
Bootstrap CSS组件之分页(pagination)和翻页(pager)
2016/12/17 Javascript
jQuery快速高效制作网页交互特效
2017/02/24 Javascript
快速解决angularJS中用post方法时后台拿不到值的问题
2018/08/14 Javascript
利用Webpack实现小程序多项目管理的方法
2019/02/25 Javascript
微信小程序非跳转式组件授权登录的方法示例
2019/05/22 Javascript
Vue+ElementUI项目使用webpack输出MPA的方法
2019/08/27 Javascript
vue组件创建的三种方式小结
2020/02/03 Javascript
jquery实现简单拖拽效果
2020/07/20 jQuery
python创建只读属性对象的方法(ReadOnlyObject)
2013/02/10 Python
将字典转换为DataFrame并进行频次统计的方法
2018/04/08 Python
python之生产者消费者模型实现详解
2019/07/27 Python
Python实现快速排序的方法详解
2019/10/25 Python
详解Python3 定义一个跨越多行的字符串的多种方法
2020/09/06 Python
HTML+CSS3+JS 实现的下拉菜单
2020/11/25 HTML / CSS
BONIA官方网站:国际奢侈品牌和皮革专家
2016/11/27 全球购物
德国最大的网上鞋店之一:Schuhe24.de
2017/06/10 全球购物
自荐信模版
2013/10/24 职场文书
大学团支书的自我评价分享
2013/12/14 职场文书
大学生个人事迹材料
2014/01/21 职场文书
政府信息公开实施方案
2014/05/09 职场文书
医院护士党的群众路线教育实践活动对照检查材料思想汇报
2014/10/04 职场文书
2016年“我们的节日·中秋节”活动总结
2016/04/05 职场文书