当前位置:   article > 正文

vue-baidu-map vue项目中使用百度地图(搜索,信息窗口,获取地点详细信息)_vue-baidu-map中的bm-info-window如何让点不能拖动

vue-baidu-map中的bm-info-window如何让点不能拖动

最近做了一个垃圾分类的项目,要求使用百度地图。主要实现以下几个功能:

1、点击地图获取到经纬度和地点信息

2、点击地图实时显示信息窗口

3、区域搜索功能,具体功能就是如下图 ↓

两个api网址,一个vue-baidu-map的api,一个JavaScript的百度地图api

vue-baidu-map:https://dafrok.github.io/vue-baidu-map/#/

JavaScript:http://lbsyun.baidu.com/jsdemo.htm#d0_1

话不多说,上代码,代码中做了详细的注释

  1. <!--地图模块-->
  2. <label>地址:<input v-model="keyword"></label>
  3. <br>
  4. <!-- getPoint方法,给地图加点击事件,点击地图获取所需要的信息,-->
  5. <!--scroll-wheel-zoom属性是否可以用鼠标滚轮控制地图缩放-->
  6. <baidu-map class="map" id="mapID" center="杭州市" :zoom="zoom" :scroll-wheel-zoom="true" @click="getPoint" >
  7. <!--地图类型,两种:一种是路线一种是绿的那种-->
  8. <bm-map-type :map-types="['BMAP_NORMAL_MAP', 'BMAP_HYBRID_MAP']" anchor="BMAP_ANCHOR_TOP_LEFT"></bm-map-type>
  9. <!--地图搜索功能,绑定上面的input,-->
  10. <!--display: none样式很关键,因为下面默认会有地址提示信息很长,很烦,这样搜索会很舒服,-->
  11. <!--zoom是搜索结果的视图比例,个人觉得12.8很舒服显示-->
  12. <bm-local-search :keyword="keyword" :auto-viewport="true" :location="location" zoom="12.8" style="display: none"></bm-local-search>
  13. <bm-navigation anchor="BMAP_ANCHOR_TOP_RIGHT"></bm-navigation>
  14. <!--信息窗口,show属性是控制显示隐藏,infoWindowClose和infoWindowOpen是控制信息窗口关闭隐藏的方法-->
  15. <bm-marker :position="postionMap" >
  16. <bm-info-window :show="show" @close="infoWindowClose" @open="infoWindowOpen" style="font-size: 14px">
  17. <p>站点:{{ add.siteName }}</p>
  18. <p>站点地址:{{ add.site }}</p>
  19. </bm-info-window>
  20. </bm-marker>
  21. </baidu-map>

上面是template中的代码,分的清楚一些,好识别

  1. data(){
  2. return{
  3. jgNameDialog: false,
  4. show: false,
  5. postionMap:{ //地图坐标
  6. lng: 120.211486,
  7. lat: 30.256576
  8. },
  9. location: '',
  10. keyword: '', //搜索框关键词
  11. zoom: 12.8, //放大比例
  12. address:'', //位置详细信息
  13. add:{
  14. siteName:'',
  15. site:'',
  16. jd:'',
  17. wd:'',
  18. desce:'',
  19. type:'',
  20. jgName:'',
  21. jgNum:'',
  22. },
  23. organizationData:[],
  24. jgName:'',
  25. jgNum:'',
  26. }
  27. },
  28. },
  29. methods:{
  30. getPoint(e){ //点击地图获取一些信息,
  31. this.show = true;
  32. this.postionMap.lng = e.point.lng; //通过 e.point.lng获取经度
  33. this.postionMap.lat = e.point.lat; //通过 e.point.lat获取纬度
  34. this.add.jd = e.point.lng;
  35. this.add.wd = e.point.lat;
  36. this.zoom = e.target.getZoom()
  37. let geocoder= new BMap.Geocoder(); //创建地址解析器的实例
  38. geocoder.getLocation(e.point,rs=>{
  39. this.add.site = rs.address;
  40. //地址描述(string)=
  41. // console.log(rs.address); //这里打印可以看到里面的详细地址信息,可以根据需求选择想要的
  42. // console.log(rs.addressComponents);//结构化的地址描述(object)
  43. // console.log(rs.addressComponents.province); //省
  44. // console.log(rs.addressComponents.city); //城市
  45. // console.log(rs.addressComponents.district); //区县
  46. // console.log(rs.addressComponents.street); //街道
  47. // console.log(rs.addressComponents.streetNumber); //门牌号
  48. // console.log(rs.surroundingPois); //附近的POI点(array)
  49. // console.log(rs.business); //商圈字段,代表此点所属的商圈(string)
  50. });
  51. },
  52. infoWindowClose () {
  53. this.show = false
  54. },
  55. infoWindowOpen () {
  56. //这里有个问题纠结了很久,百度的信息窗口默认有个点击其他地方就消失的事件,我没有找到
  57. //并且信息窗口点击一次显示,一次消失
  58. //于是我加了一个100毫秒的定时器,保证每次点击地图都可以展示信息窗口
  59. setInterval(()=>{
  60. this.show = true
  61. },100)
  62. },
  63. }

以上是我项目中使用的百度地图的一些功能,以后有额外功能再继续添加。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/109781
推荐阅读