前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >App百度地图模块使用

App百度地图模块使用

作者头像
生南星
发布2020-04-02 11:36:13
6230
发布2020-04-02 11:36:13
举报
文章被收录于专栏:生南星生南星

在使用vue编写App时涉及到了APICloud中 bMap(百度地图) 的模块的相关使用,记录遇到的相关问题。

将 bMap 模块添加到App中后应仔细阅读相关文档:https://docs.apicloud.com/Client-API/Open-SDK/bMap#addAnnotations

1. 使用此模块之前必须先配置 config 文件,配置方法如下:

代码语言:javascript
复制
<feature name="bMap">
   <param name="android_api_key" value="f7Is0dWLom2q6rV3ZfFPZ1aa" />
   <param name="ios_api_key" value="81qz3dBYB5q2nGji4IYrawr1" />
</feature>

其中value为在 百度地图api 上申请的密钥,申请步骤很简单,注册后创建应用即可得到,这里不做详细讲解。

2. 下面是实现基本功能的简单代码,看过文档都能很轻易地理解:

代码语言:javascript
复制
addressMap(){
  var lon_user;
  var lat_user;
  map.open({
     rect:{
       x: 0,
       y: 30,
       w: 'auto',
       h: 460
      },
      zoomLevel:15,
      showUserLocation : true
   },function(ret){
       api.showProgress({
       style: 'default',
       animationType: 'fade',
       title: '定位中...',
       text: '请稍候...',
       modal: false
       });
     map.getLocation({
         accuracy: '10m',
         autoStop:true,
         filter: 1
     },function(ret){
         api.hideProgress();
         var sta = ret.status;
         lon_user = ret.lon;
         lat_user = ret.lat;
         map.setCenter({
            coords: {
               lon: lon_user,
               lat: lat_user
             },
             animation: true
         });
      });
      //地图中当前所在位置的标注
      map.addAnnotations({
         annotations: [{
           id: 1,
           lon: lon_user,
           lat: lat_user
           }],
           draggable: true
      }, function(ret) {

      });
  });
}

3. 不出意外上述代码可以生成一个地图并进行了定位,但地图是相当于浮在页面上的元素,类似于iframe,因此在组件销毁时必须将地图关闭:

代码语言:javascript
复制
destroyed() {
   map.close();
}

参考博客 百度地图模块(bMap)使用全攻略:https://community.apicloud.com/bbs/forum.php?mod=viewthread&tid=14964

既然是App只能在手机上才能进行调试,此时需要用到真机调试,下载地址:https://www.apicloud.com/devtools

APICloud -> 自己的项目 -> 模块 -> 自定义loader -> 编译自定义loader(安卓或者IOS),编译成功后用手机扫码下载App进行测试。

完成以上步骤后可以将打包后的 dist 文件(包含配置文件)用 APICloud Studio 2打开,右键 dist 文件夹点击【查看WIFI真机同步IP和端口】,连接手机 (注:电脑与手机必须使用同一个网络)即可完成。每次打包代码以后都需要右键 dist 文件夹进行【WIFI全量同步】,之后就可在手机上调试。

关于vue直接使用百度地图进行定位推荐博客:https://blog.csdn.net/zi114323/article/details/83782703

在写代码过程中遇到的问题解决:vue 的 this.$refs 打印为undefined

vue 官网是这样说的:关于 ref 注册时间的重要说明:因为 ref 本身是作为渲染结果被创建的,在初始渲染的时候你不能访问它们 - 它们还不存在!$refs 也不是响应式的,因此你不应该试图用它在模板中做数据绑定。

因此,在页面渲染完成之前我们都没办法得到 this.$refs,常用解决办法如下:

  1. 如果你在 mounted 或其之前获取this.$refs,因为dom还未完全加载,所以我们是拿不到的, update 阶段则是完成了数据更新到 DOM 的阶段(对加载回来的数据进行处理),此时,就可以使用 this.$refs了。
  2. 如果写在 method 或其之前中,那么可以使用 this.$nextTick(() => {}) 等页面渲染好再调用,就可以得到 this.$refs了。

而我遇到的另一个问题就真的很难受,在打包项目时报如下错误:

网上大多都说是缓存问题,用命令清除缓存,当然我的反正没有什么用;有的博客干脆将 node_modules 文件夹删除,清除缓存后再重新安装,然而也没有什么用。

最后多番搜索发现是权限问题,一个文件始终没办法更改删除,最后只能用最笨的方法除了 node_modules 文件夹与 dist 文件夹之外的文件全部复制到另一个新的文件夹中,成功解决。

但没想到下午又有这个错误,不得已开始认真去百度解决,然后被我发现了一个不是办法的办法:

任务管理器 -> 性能 -> 资源监视器 -> 选择CPU -> CPU下面的搜索句柄 -> 输入无法删除的文件夹 -> 右键结束进程。

完成这一系列操作后文件就已经被删除了,重新打包问题解决。

参考博客 文件无法删除 你需要计算机管理员 提供的权限才能对此文件进行更改解决办法

:https://blog.csdn.net/weixin_42434055/article/details/100766655

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生南星 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档