BaiduMap插件运用

本文介绍了如何在Vue.js项目中结合jQuery,有效利用BaiduMap插件实现地图功能。通过引入相关库,设置地图中心点,添加标记,实现了交互式的地图应用。

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

main.js引入百度插件
//下载百度地图插件 npm i vue-baidu-map --save    npm install vue-baidu-map
import BaiduMap from 'vue-baidu-map'
Vue.use(BaiduMap, {
  /* 申请的百度密钥,可以在百度地图官网申请 */
  ak: 'dQzK8G22g7gFdQkrKvGr9G5vYVr7GQD8'
})
vue页面
<baidu-map id="allmaps" @ready="mapReady" :scroll-wheel-zoom="true"></baidu-map>

 js:

/** 默认地图坐标 运动轨迹*/
mapReady({BMap, map}) {
  var that = this;
  that.BMap = BMap;
  that.map = map;
  that.ditu();
},

ditu() {
  var BMap = this.BMap;
  var map = this.map;
  var that = this;
  map.clearOverlays();
  // 选择一个经纬度作为中心点
  var geolocation = new BMap.Geolocation();
  geolocation.getCurrentPosition(function (r) {
    if (this.getStatus() == BMAP_STATUS_SUCCESS) {
      if (that.trajectoryList.length > 0) {
        this.point = new BMap.Point(that.trajectoryList[0].lon, that.trajectoryList[0].lat);
      } else {
        this.point = new BMap.Point(r.point.lng, r.point.lat);
      }
      map.centerAndZoom(this.point, 12);
      var sy = new BMap.Symbol(BMap_Symbol_SHAPE_BACKWARD_OPEN_ARROW, {
        scale: 0.6,//图标缩放大小
        strokeColor: '#1890ff',//设置矢量图标的线填充颜色
        strokeWeight: '2',//设置线宽
      });
      var icons = new BMap.IconSequence(sy, '10', '30');
      var pois = [];
      for (var i = 0; i < that.trajectoryList.length; i++) {
        pois.push(new BMap.Point(that.trajectoryList[i].lon, that.trajectoryList[i].lat));
      }
      var polyline = new BMap.Polyline(pois, {
        enableEditing: false,//是否启用线编辑,默认为false
        enableClicking: true,//是否响应点击事件,默认为true
        icons: [icons],
        strokeWeight: '3',//折线的宽度,以像素为单位
        strokeOpacity: 0.8,//折线的透明度,取值范围0 - 1
        strokeColor: "#ff1818" //折线颜色
      });
      map.addOverlay(polyline);          //增加折线
    } else {
      // alert('failed' + this.getStatus());
    }
  }, {enableHighAccuracy: true})
},

removeBmap() {
  var map = this.map;
  map.clearOverlays();
},

css:

#allmaps {
  width: 100%;
  height: 600px;
  margin: 0 auto;
}
### 地图 API 的集成 为了在 UniApp 中实现地址管理功能,可以采用不同地图服务商提供的 API 来满足需求。以下是基于高德地图和百度地图的解决方案。 #### 高德地图方案 通过 `amap.AMapWX` 创建的地图实例能够方便地调用各种接口来处理地理信息[^1]: ```javascript var myAmapFun = new amap.AMapWX({ key: '你的高德地图Key' }); ``` 对于反向查询详细地址的功能,则可以通过发送 HTTP 请求给高德 RESTful 接口完成。具体来说就是利用获取到的经纬度参数构建请求 URL 并发起 GET 请求以获得位置详情[^3]: ```javascript // 反查详细地址函数定义 turnAdrr(longs, lat) { const _key = '你申请的【web服务】的key'; uni.request({ method: 'GET', url: 'https://restapi.amap.com/v3/geocode/regeo?', data: { key: _key, location: `${longs},${lat}`, output: 'JSON' }, success: res => { console.log('用户所在的地理位置信息:', res); }, fail: err => { console.error(err); } }); } ``` #### 百度地图方案 如果选择百度地图作为底层支持,在 Vue 或者 UniApp 环境下通常会借助于 `vue-baidu-map` 组件库来进行开发工作[^2]。下面是一个简单的例子展示了怎样初始化一个带有定位能力的应用程序结构以及如何执行一次地点搜索操作: ```html <template> <div id="baidu-map-container"></div> </template> <script> import BaiduMap from "vue-baidu-map/components/map/Map.vue"; export default { components: {BaiduMap}, mounted(){ // 初始化逻辑... }, methods:{ searchLocation(keyword){ // 执行关键词搜索... } } }; </script> ``` 需要注意的是,实际项目中还需要考虑跨平台兼容性和性能优化等问题;另外,无论是选用哪家的服务商都应当仔细阅读官方文档以便更好地理解和运用所提供的工具集。 #### 结合案例分析 考虑到 UniApp 是一个多端框架,因此建议开发者根据目标平台特性灵活调整所使用的地图 SDK 。例如,在微信小程序环境中更适合使用腾讯自家的地图组件或是经过适配后的第三方插件;而在 Web 应用场景里则更倾向于直接对接各大厂商公开的标准 API 接口。 最后提醒一点,无论采取哪种方式都要记得妥善保管好自己的 API Key ,防止泄露造成不必要的损失!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值