VUE2.0百度在线地图及搜索地址

本文介绍了如何在Vue.js应用中集成百度地图插件vue-baidu-map,实现地图初始化、地址搜索、点击获取经纬度等功能。通过引入插件、设置组件、监听事件,展示了从搜索地址到选择结果并更新地图中心点的完整过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、下载地图插件  npm install vue-baidu-map

2、引入百度地图插件 import BaiduMap from 'vue-baidu-map/components/map/Map.vue'

3、在html中使用

 <div style="text-align: center">
        <div :class="baseFormStyle.locationBox">
          <div  style="width: 200px;position: absolute; left: 60px;top: 10px;z-index:100 !important;">
            <a-input-search
              placeholder="请输入地名"
              id="searchIn"
              @search="searchAddress"
              @clear="searchAddress"
              @focus="focusClick"
              clearable
              search
              style="width: 200px; ">
            </a-input-search>
            <div v-show="showResultFlag" :class="baseFormStyle.searchResultBox">
              <happy-scroll resize >
                <div  :class="baseFormStyle.searchResult">
                  <div v-for="(item, index) in searchResult" :class="baseFormStyle.item" :key="index" @click="handleSelect(item)">
                    <p :class="baseFormStyle.title">{{ item.title }}</p>
                    <p :class="baseFormStyle.address">{{ item.address }}</p>
                  </div>
                </div>
              </happy-scroll>
            </div>
          </div>
          <baidu-map
            id="allmap"
            :class="baseFormStyle.allmap"
            ak="您的秘钥"
            :center="mapCenter"
            :zoom="mapZoom"
            :scroll-wheel-zoom="true"
            @ready="mapReady">
          </baidu-map>
        </div>
      </div>

4、js中使用地图 初始化

  //地图初始化
        mapReady({ BMap, map }) {
            let that = this;
            this.BMap = BMap;
            this.baseForm.locationLatitude = 113.43097;
            this.baseForm.locationLongitude = 23.092506;
            this.map = map;
            this.point = new this.BMap.Point( this.baseForm.locationLatitude, this.baseForm.locationLongitude);
            this.mapCenter.lng =  this.baseForm.locationLatitude;
            this.mapCenter.lat = this.baseForm.locationLongitude;
            this.tempData.locationLatitude =  this.baseForm.locationLatitude;
            this.tempData.locationLongitude = this.baseForm.locationLongitude;
            // 选择一个经纬度作为中心点
            this.map.centerAndZoom(this.point, 12);
            let marker = new this.BMap.Marker(this.point);        // 创建标注
            this.map.addOverlay(marker);                     // 将标注添加到地图中
            this.map.addControl(new this.BMap.NavigationControl());
            this.zoom = 15;
            map.addEventListener("click", function(e){
                that.tempData.locationLatitude = e.point.lng;
                that.tempData.locationLongitude = e.point.lat;
            });
        },

 5、搜索地址关键词

  //搜索地址
        searchAddress(data = ''){
          console.log('data',data)
            if(!data || this.tempData.searchKeyWord === data){
                data = ''; return;
            }
            this.tempData.searchKeyWord = data;
            let map = this.map;
            let that = this;
            that.showResultFlag = true;
            let local =  new this.BMap.LocalSearch(map,{
                renderOptions:
                    {map: map,  autoViewport: true, selectFirstResult: false  },
                onMarkersSet:function (array) {
                    console.log(array);
                },
                onInfoHtmlSet:function (LocalResultPoi) {
                    console.log(LocalResultPoi);
                },
                onResultsHtmlSet:function (element) {
                    console.log(element);
                }
                ,onSearchComplete: function(res){
                    console.log("results",res)
                    if (res && res.Kr) {
                        that.searchResult = [...res.Kr]
                    }
                }
            });
            local.search(data)
        },

 6、选择下拉结果

   

// 选择下拉
        handleSelect(item) {
            let that = this;
            let title = item.title;
            let { lng, lat } = item.marker.point;
            let point = new that.BMap.Point(lng, lat);
            let geoc = new that.BMap.Geocoder();
            that.tempData.locationLatitude = lng;
            that.tempData.locationLongitude = lat;
            geoc.getLocation(point, function (res) {
                that.showResultFlag = false;
                that.map.clearOverlays(); //清除地图上所有覆盖物
                that.map.addOverlay(new that.BMap.Marker({ lng, lat }));
                that.mapCenter.lng = lng;
                that.mapCenter.lat = lat;
                that.mapZoom = 15;
            })
        },

7、效果如下

### Vue 2.0 中实现湖北省地图功能的方法 在 Vue 2.0 中集成湖北省地图功能,可以借助第三方的地图服务提供商(如百度地图、高德地图或腾讯地图),并通过其 API 实现自定义地图显示。以下是具体方法: #### 1. 使用百度地图 JavaScript API 集成湖北省地图 百度地图提供了一个强大的 JavaScript API,支持嵌入到网页中并定制地图样式。以下是如何在 Vue 2.0 中使用百度地图来展示湖北省地图。 ##### 安装依赖项 如果项目未引入 `vue-baidu-map` 插件,则需先安装插件: ```bash npm install vue-baidu-map --save ``` ##### 初始化配置 在项目的入口文件(通常是 `main.js`)中初始化百度地图插件: ```javascript import Vue from 'vue'; import BaiduMap from 'vue-baidu-map'; Vue.use(BaiduMap, { ak: '您的百度地图API密钥' // 替换为您申请的AK }); ``` ##### 创建地图组件 创建一个名为 `HubeiMap.vue` 的组件,在其中加载湖北省地图: ```vue <template> <baidu-map class="map" :center="{lng: 114.305, lat: 30.593}" :zoom="7"> <!-- 添加其他地图控件 --> </baidu-map> </template> <script> export default { name: "HubeiMap", }; </script> <style scoped> .map { width: 100%; height: 600px; } </style> ``` 此处设置中心坐标为武汉市经纬度 (114.305, 30.593),缩放级别设为 7,以便覆盖整个湖北省区域[^1]。 #### 2. 使用高德地图 JavaScript API 集成湖北省地图 高德地图同样提供了丰富的 API 功能,适用于 Vue 2.0 项目。 ##### 引入高德地图脚本 在页面中通过 `<script>` 标签引入高德地图 JS 文件: ```html <script src="https://webapi.amap.com/maps?v=1.4.15&key=您的高德地图API密钥"></script> ``` ##### 编写地图逻辑 在 Vue 组件中动态渲染地图实例: ```vue <template> <div id="hubei-map" style="width: 100%; height: 600px;"></div> </template> <script> export default { mounted() { this.initMap(); }, methods: { initMap() { const map = new AMap.Map("hubei-map", { zoom: 7, center: [114.305, 30.593], // 武汉市经纬度作为中心点 }); } } }; </script> ``` 此代码片段展示了如何利用高德地图 API 加载湖北省地图,并将其绑定至指定 DOM 节点[^2]。 #### 3. 自定义地图样式与交互 无论是百度地图还是高德地图,都允许开发者调整地图的颜色主题、标记物图标以及其他视觉效果。例如,可通过 JSON 数据定义地图样式规则,并应用到地图对象上。 对于更复杂的场景需求,还可以结合 Leaflet 等轻量级地图库完成特定任务。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值