Vue Baidu Map--点标记bm-marker的使用、注意事项

点标记 bm-marker的使用
  1. import引入bmMarker 和bmLabel 组件
<script>
import BaiduMap from 'vue-baidu-map/components/map/Map.vue'
import bmMarker from 'vue-baidu-map/components/overlays/Marker'
import bmLabel from './components/vue-baidu-map/components/overlays/Label'
export default {
  components: {BaiduMap,bmMarker ,bmLabel },
}
</script>
  1. <baidu-map>中加入<bm-marker><bm-label>
  • <bm-marker>是点标记,其中参数position是标记点的经纬度;
  • <bm-label>是标记点的文字标注,其中参数content是文字内容、labelStyle是文字样式、offset是相对位置
<template>
<div class="map-content" v-if="iscollegeRole">
      <baidu-map class="bm-view map"
                 :ak="mapAK" 
                 :scroll-wheel-zoom="true" 
                 :center="mapData.center" 
                 :zoom="mapData.zoom"
                 :continuous-zoom="true"
                 @ready="handler">
       <bm-marker :position="mapData.center">
       <bm-label  content="标记点"
                 :labelStyle="labelStyle"
                 :offset="{width: -10, height: 30}"/>
        </bm-marker>
      </baidu-map>
    </div>
</template>

完整这两步就可以显示点标记了,下面放了完整代码


注:若开发时发现控制台报错

Error in callback for watcher "labelStyle": "TypeError: Cannot read property 'setStyle' of undefined"

原因: bm-label组件的参数labelStyle使用方法不正确导致的,labelStyle需要先在data中声明,然后在<bm-label>中使用

<script>
export default {
  data() {
        return {
          labelStyle:{color: 'red', fontSize : '14px',fontWeight:'600'},
      }
   },
}
</script>


完整代码:

<template>
<div class="map-content" v-if="iscollegeRole">
      <baidu-map class="bm-view map"
                 :ak="mapAK" 
                 :scroll-wheel-zoom="true" 
                 :center="mapData.center" 
                 :zoom="mapData.zoom"
                 :continuous-zoom="true"
                 @ready="handler">
       <bm-marker :position="mapData.center">
       <bm-label  content="标记点"
                 :labelStyle="labelStyle"
                 :offset="{width: -10, height: 30}"/>
        </bm-marker>
      </baidu-map>
    </div>
</template>

<script>
import BaiduMap from 'vue-baidu-map/components/map/Map.vue'
import bmMarker from 'vue-baidu-map/components/overlays/Marker'
import bmLabel from './components/vue-baidu-map/components/overlays/Label'
export default {
  components: {BaiduMap,bmMarker ,bmLabel },
  data() {
        return {
          mapAK: 'XXXXXXXXXXX',//需要到百度地图官网申请ak
          BMap:null,
          map:null,
          mapData: {
            //中心坐标
            center: { lng: 113.33, lat: 39.01 },
            //缩放级别,1~19
            zoom: 19
          },
          labelStyle:{color: 'red', fontSize : '14px',border:'none',background:'none',fontWeight:'600'},
      }
   },
   methods:{
        handler ({BMap, map}) {
          console.log(BMap, map)
          this.BMap = BMap
          this.map = map
          }
     },
}
</script>

<style scope>
.map {
  width: 100%;
  height: 400px;
}
</style>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个基于vue-baidu-map拖动bm-marker获取经纬度和详细地址的代码示例: ``` <template> <div> <baidu-map ak="your_baidu_map_ak" @ready="onMapReady" :center="center" :zoom="zoom" style="height: 500px;"> <bm-marker :position="markerPosition" :label="markerLabel" :enableDragging="true" @dragging="onMarkerDragging" @dragend="onMarkerDragEnd"> </bm-marker> </baidu-map> <div v-if="address">{{ address }}</div> </div> </template> <script> import { BaiduMap, BmMarker } from 'vue-baidu-map' export default { components: { BaiduMap, BmMarker }, data() { return { center: { lng: 116.404, lat: 39.915 }, zoom: 15, markerPosition: { lng: 116.404, lat: 39.915 }, markerLabel: { content: '拖动我获取位置信息', offset: { width: 30, height: -30 } }, address: '' } }, methods: { onMapReady(map) { this.geocoder = new window.BMap.Geocoder() }, onMarkerDragging(event) { this.markerPosition = event.point }, onMarkerDragEnd(event) { this.markerPosition = event.point this.getAddress(this.markerPosition) }, getAddress(point) { this.geocoder.getLocation(point, result => { if (result) { this.address = result.address } }) } } } </script> ``` 在这个示例中,我们使用vue-baidu-map组件库来创建一个百度地图实例。然后,我们在地图上放置了一个可拖动的marker,并监听marker的dragging和dragend事件来更新marker的位置并获取对应的详细地址。其中,我们使用了百度地图的Geocoder类来获取地址信息。最后,我们将获取到的地址显示在页面上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值