文章目录

  • 前言
  • 一、使用uniapp 原生的map 组件
  • 二、发现坑1
  • 三、分析ui图----发现坑2
  • 四、发现坑3
  • 四、发现坑4
  • 五、发现坑5 ----------------很重要,楼主花费了好长时间,愿大家都跳坑
  • 六、实现聚合
  • 六、总结

前言

最近正在做小程序地图,收到ui 给的图,一开始以为很简单的,但在看了ui 给的图以后,发现没有这么简单。
下面是ui给的图:

于是花了很长的时间,走了很多坑才最终实现,来看效果链接:
https://s19.aconvert.com/convert/p3r68-cdx67/2sq95-zprfy.gif
图片如下:


接下来我将花点时间来说说如何实现和所遇到的坑

一、使用uniapp 原生的map 组件

查看uniapp 官网的map 的文档:https://uniapp.dcloud.net.cn/component/map.html#
注意如果没有特定的声明,那微信小程序默认调用的是腾讯地图。
template 代码如下:

 <!-- 这是地图 --><view class="page-section page-section-gap"><map :markers="markers" scale='18' :enable-satellite='checkedWeixin'  enable-building='true' style="width: 100%; height:calc(90vh);" :latitude="latitude" :longitude="longitude"id="map" ref='map' show-location='true' @callouttap='callouttap'></map></view>

js 的代码如下:

 data() {return {checkedWeixin:false,latitude:31.23598 ,longitude: 121.48053 ,markers: [{id: 0,title: "测试1",width: 58,height: 58,latitude:31.23588,longitude:121.48053 ,}]}},

这样写完之后,你会得到一个地图和一个定位坐标点,不过样式比较丑陋,坐标点的图标也是原生的,当然你可以采用自定义的图标,只需要在markers 里添加一个iconpPath ,具体的参数详见上面的官网链接。

二、发现坑1

这个时候,如果你的坐标是随便乱写的,你可能发现不了,但如果你刻意的使用某个具体位置的经纬度坐标,你就会发现,你从百度上找来的经纬度复制进去,在小程序的地图上会有偏差,这是怎么回事?这是因为考虑到定位的特殊性和敏感性,然后不同的厂商的算法也不一样,所以相同的经纬度,在不同的地图上显示也不一样了
解决:使用gcoord.js 这个可以自行去百度。
故 js 的代码也需要修改如下:

这样就解决了偏差的问题,顺利爬出第一个坑。。。。。。。

三、分析ui图----发现坑2

分析ui 图,不难发现,这个定位点,是有一个背景图,然后再背景图上有着不同头像的图片,这个,貌似用iconPath 貌似实现不了呀,这个时候,又陷入了另一个坑,也尝试了很多种的方法,想着,用插槽,我单独写marker ,失败,就在绝望的时候,我把uniapp 的官网向下滑动,发现了另一个东西

查阅资料发现,这两个属性可以用插槽单独写,到这里,想到了思路:
首先改造template 的map 组件,如图:

使用气泡 callout的注意事项,网上查一查也都有

这里我写了两张图,一个背景图,一张人物图,然后一张层级在上面,然后设置好对应的定位,这样就实现了背景图上有头像。

四、发现坑3

继上面的步骤,有人会问,为什么要这样是想呢?不直接给view 一个背景图属性,然后再用img 不就好, 我之前也是这样是想的,奈何,虚拟机上可以,但到了真机上不行,后来查了资料才明白,是cover-view 的限制,至于为什么要在地图上用cover-view ,具体大家可以去百度一下就知道了,还有为什么说cover-view 是个坑,大家百度一下也就知道了,他的第一个坑就是,不支持css 动画,也就是效果上的定位点一上一下的效果,之前直接使用animate.css 就行了,唉,又是掉头的一天,后面采用了uniapp 自己写动画,如下面:

<cover-image style='width: 50px;height: 58px;' src='https://images.hicling.com:9443/weixin/onlineBg.png'
:animation="animationData" />

js :

emmmmm,完美,这样就又解决了一个坑,继续。。。。。。。

四、发现坑4

本来以为写完这个,会出现我想象中的东西,结果还有那个丑陋的原生的marker 图标,这,这,这,我这不是需要重新设置iconPath ,可设置成什么,在页面上都会显示的呀,后面想了个骚操作,我上传一张透明的图片不就好了,这样不就没了,嗯,就这个干,果然marker 图标就不见,完美!!!

五、发现坑5 ----------------很重要,楼主花费了好长时间,愿大家都跳坑

这些写完之后,在模拟机上显示是可以的,但在真机上头像缺不见了,因为现在这个图像是从后端传过来的,之前的头像都是写死的,所以就出这个问题了。


然后我发了好长好长时间,大概一个下午,真的推到重写了很多很多次,网上也说可能是cover-iamge 的问题,然后我发现,可能是position的问题,之前的style 是这样写的,可能cover-image对position 无效

于是我换了种方式写法:

然后真机调试,芜湖,开心,总算出来了,功夫不负有心人!!!

六、实现聚合

这功能可以根据地图的比例,自动将相近的点聚合,然后显示数字。

六、总结

经历了这些,感觉uniapp 和小程序的bug 确实有点多,但好在社区活跃的人比较多,大家集思广益,方法总比问题多,最后如果觉得文章写的不错,麻烦大家点点赞!!!

如果需要完整的demo 代码,请联系 1015095073@qq.com

uniapp 小程序map地图上显示多个酷炫动态的标点,头像后端传过来,真机测试有效相关推荐

  1. uniapp微信小程序 map地图markers图标不显示,markers图标真机调试不显示

    uniapp微信小程序 map地图markers图标不显示,markers图标真机调试不显示 举例: 预期效果如下,蓝色为用户位置,红色为店铺位置均为自定义图标 实际发布后手机上的效果 (此处忽略位置 ...

  2. uni-app 小程序多图上传

    uni-app 小程序多图上传: 官方提示说,App支持多文件上传,微信小程序只支持单文件上传,传多个文件需要反复调用本API.所以跨端的写法就是循环调用本API 步骤: //1.首先通过 uni.c ...

  3. uni-app支付宝小程序map地图组件基础操作+画多边形+打点连线

    我们可以参考uni-app官网链接 地图块 显示气泡标注和多边形 <mapv-if="longitude && latitude"style="wi ...

  4. 微信小程序map 地图引入配置+腾讯地图地址坐标解析

    最终效果 一.要实现的功能 展示地图. 参考map组件 在地图上展示多个店铺. marker标记点用于在地图上显示标记的位置. 点击店铺放大图标,展示选择的店铺信息. 更改选择店铺的标记尺寸大小. 在 ...

  5. 微信小程序—map地图实现标记多个位置

    前言: 在这里给大家介绍一个地标搜索网站(可精准获取经纬度,备注有介绍):  中国城市列表-卫星地图-地球在线 小程序官方地图 map 文档参考 小程序官方地图 map 相关 API (地图组件控制) ...

  6. 微信小程序map地图调用(速学)

    目录 wxml文件 js文件 lib下引入qqmap-wx-jssdkjs文件 json文件 编译后点击选择地图 也可点击真机测试,微信扫码查看 wxml文件 <view><text ...

  7. 小程序map组件不显示坐标,且出现了bing地图的标识,解决。

    map地图组件使用 <map id="map" longitude="{{lng}}" latitude="{{lat}}" scal ...

  8. 微信小程序map地图轨迹回放的问题

    map地图轨迹回放报FaceTo的错误 如果你的轨迹回放报出这个错误,那么你可能和我一样,是在轨迹回放还未结束的时候或者说是还没有到一个点停止的时候就更新了新的位置信息,想让地图重新的渲染并执行. 这 ...

  9. 支付宝小程序map地图

    我这里使用的mpvue去开发的支付宝小程序,这里记录下使用map地图的过程 <mapid="map":longitude="lon":latitude=& ...

最新文章

  1. Python编程的若干个经典小技巧
  2. 困难动态规划系列、经典的正则表达式和通配符匹配问题(难题)
  3. Windows + Eclipse + Gtk 环境(总结)
  4. 《动手学深度学习 PyTorch版》学习笔记(三):线性回归
  5. Tensorflow深度学习应用(筑基篇)
  6. python随机生成一个日期_Python中随机生成未来一个月内的一个随机的日期时间
  7. Leetcode题解(十三)
  8. java火币网做接口_火币网API文档——Websocket 请求与订阅示例
  9. React 单文件上传和多文件上传的封装
  10. php使用memcache处理缓存数据
  11. codevs 1576 最长上升子序列的线段树优化
  12. 输入一个三位数,再反向输出
  13. Win7手工查找notepad.exe的IAT
  14. html5制作新年祝福,2018新年祝福贺卡制作
  15. home目录权限linux,linux 文件/文件夹权限
  16. 使用 Abp.Zero 搭建第三方登录模块(一):原理篇
  17. 3种常见的数据库迁移同步工具对比,哪个更适合你?
  18. 机器学习:非负矩阵分解(NMF)
  19. python四大器_Python程序库中的四大天王
  20. autojs点击方式汇总:autojs点击的几种方式

热门文章

  1. QC缺陷字段,级别,流程图,人员修改规范管理
  2. C++抽象编程——回溯算法(1)——迷宫问题
  3. w ndows10输入法设置,Win10输入法设置
  4. 【快速排序】(C语言实现)
  5. 业内人士告诉你,买流量卡时一定要问的几个问题?
  6. 越努力越幸运!22届双非本科收获阿里、b站等6家大厂offer
  7. python 将pdf转换成txt
  8. ibatis mysql iterate_ibatis中动态语句的iterate标签
  9. VisionPro联合C#编程,康耐视cognex,程序案例 针对VisionPro联合C#框架搭建,封装成独立控件
  10. idea:properties in parent definition are prohibited提示报错