zoukankan      html  css  js  c++  java
  • vue Baidu Map --- vue百度地图插件

    vue Baidu Map 官网:https://dafrok.github.io/vue-baidu-map/#/zh/start/installation

    javascript 官网:http://lbsyun.baidu.com/jsdemo.htm#d0_1

    实现功能:

    1. 搜索地点
    2. 点击地图获取到经纬度和地点信息

    vue Baidu Map 安装:

    $ npm install vue-baidu-map --save

     

    全局注册

    全局注册将一次性引入百度地图组件库的所有组件。

    import Vue from 'vue'
    import BaiduMap from 'vue-baidu-map'
    
    Vue.use(BaiduMap, {
      // ak 是在百度地图开发者平台申请的密钥 详见 http://lbsyun.baidu.com/apiconsole/key */
      ak: 'YOUR_APP_KEY'
    })


    使用:

    <template>
      <baidu-map class="bm-view">
      </baidu-map>
    </template>
    
    <style>
    //宽高一定要定义,否则看不见
    .bm-view { 100%; height: 300px; } </style>

    开始功能:使用搜索插件

        <el-form-item label="输入地址关键词">
            <el-input v-model="keyword"/> <!--输入关键词触发搜索-->
            <input v-model="location" type="hidden">  <!--定位这个location点 如:厦门 地图打开就地位在厦门-->
          </el-form-item>
            <baidu-map
              :center="center"
              :zoom="15"  <!--搜索结果的视图比例-->
              :scroll-wheel-zoom="true" <!--是否可以用鼠标滚轮控制缩放-->
              @click="getPoint"> <!--地图的点击事件 点击地图获取所需要的信息 如:经度、纬度-->
              <!--地图类型,两种:一种是路线一种是绿的那种-->
              <bm-map-type :map-types="['BMAP_NORMAL_MAP', 'BMAP_HYBRID_MAP']" anchor="BMAP_ANCHOR_TOP_LEFT"/>
              <bm-view class="map"/>
              <bm-local-search :keyword="keyword" :auto-viewport="true" style="0px;height:0px;overflow: hidden;"/>  <!--隐藏下面的地址信息 美观点-->

    script: data数据
         location: '厦门',
          keyword: '厦门',
          zoom: 15,
          center: {
            lng: 118.206484,
            lat: 24.492774
          }
    

    事件:获取经纬度 和 地点

    getPoint(e) {
          // console.log(e)
          this.form.lng = e.point.lng
          this.form.lat = e.point.lat
          /* global BMap */  ****画重点:这里不是注释,是解决eslint报错
          const geocoder = new BMap.Geocoder() // 创建地址解析器的实例
          geocoder.getLocation(e.point, rs => {
            // console.log(rs.addressComponents) // 结构化的地址描述(object)
            const province = rs.addressComponents.province //
            const city = rs.addressComponents.city // 城市
            const district = rs.addressComponents.district // 区县
            const street = rs.addressComponents.street // 街道
            const streetNumber = rs.addressComponents.streetNumber// 门牌号
            this.form.address = province + city + district + street + streetNumber // 组装成地址
            // console.log(rs.surroundingPois) // 附近的POI点(array) POI:兴趣点 可以是一栋房子、一个商铺、一个邮筒、一个公交站
            // console.log(rs.business) // 商圈字段,代表此点所属的商圈(string)
          })
        },

    注意:

    eslint 会报错:ESLint: 'BMap' is not defined. (no-undef)

    解决办法:参考自文章:https://blog.csdn.net/xiu52t/article/details/84643716

    方法1:如上图,在BMap上面加一行注释   /* global BMap */

    方法2:在 .eslintrc.js中加代码

    globals: { BMap: true },

      

  • 相关阅读:
    Shell脚本中循环语句for,while,until用法
    国内yum源的安装(163,阿里云,epel)
    express高效入门教程(4)
    express高效入门教程(3)
    express高效入门教程(2)
    express高效入门教程(1)
    dart快速入门教程 (8)
    dart快速入门教程 (7.4)
    dart快速入门教程 (7.3)
    dart快速入门教程 (7.2)
  • 原文地址:https://www.cnblogs.com/dudu123/p/10455274.html
Copyright © 2011-2022 走看看