小程序,uniapp中map的使用

2天撸了一个地图标记的小程序,感谢uniapp, unicloud让开发如此高效。

主要功能是在map组件上做标记,用户点击标记可以看标记的详情,很简单,单一的小程序

了解map组件的基本使用,在地图上创造无线可能(吹牛)

各位可以看下效果. 

直接上代码

1. template声明map组件

<map 
:markers="poiList"
@markertap="markertap"
:scale=10
:latitude="latitude"
:longitude="longitude"
style="width: 100%;" :style="{height: windowHeight+'px'}"></map>

属性说明:

markers: 是标记点的数据,数据类型为数组,详细见下图。id, latitude,longitude, width,height,iconPath,title这几个属性是必须有值的。虽然uniapp官方文档上有的写非必填,但是不填会报错的

属性说明类型必填备注平台差异说明
id标记点idNumbermarker点击事件回调会返回此id。建议为每个marker设置上Number类型id,保证更新marker时有更好的性能。最大限制9位数
latitude纬度Number浮点数,范围 -90 ~ 90
longitude经度Number浮点数,范围 -180 ~ 180
title标注点名String点击时显示,callout存在时将被忽略App-nvue 2.1.5+、微信小程序、H5、支付宝小程序、百度小程序、京东小程序
iconPath显示的图标String项目目录下的图片路径,支持相对路径写法,以'/'开头则表示相对小程序根目录;也支持临时路径
rotate旋转角度Number顺时针旋转的角度,范围 0 ~ 360,默认为 0App-nvue 2.1.5+、微信小程序、支付宝小程序、百度小程序、京东小程序
alpha标注的透明度Number默认1,无透明,范围 0 ~ 1App-nvue 2.1.5+、微信小程序、支付宝小程序、百度小程序、京东小程序
width标注图标宽度Number默认为图片实际宽度App-nvue 2.1.5+、微信小程序、H5、支付宝小程序、百度小程序、京东小程序
height标注图标高度Number默认为图片实际高度App-nvue 2.1.5+、微信小程序、H5、支付宝小程序、百度小程序、京东小程序
callout自定义标记点上方的气泡窗口Object支持的属性见下表,可识别换行符。App-nvue 2.1.5+、H5、微信小程序、支付宝小程序、百度小程序、京东小程序
label为标记点旁边增加标签Object支持的属性见下表,可识别换行符。App-nvue 2.1.5+、微信小程序、H5、App、百度小程序、支付宝小程序
anchor经纬度在标注图标的锚点,默认底边中点Object{x, y},x表示横向(0-1),y表示竖向(0-1)。{x: .5, y: 1} 表示底边中点App-nvue 2.1.5+、微信小程序、H5、百度小程序、京东小程序
clusterId自定义点聚合簇效果时使用NumberApp-nvue 3.1.0+、微信小程序
customCallout自定义气泡窗口ObjectApp-nvue 2.1.5+、微信小程序、支付宝小程序
aria-label无障碍访问,(属性)元素的额外描述StringApp-nvue 3.1.0+、微信小程序
joinCluster是否参与点聚合Boolean如果指定点聚合 此选项值必须设置为true,才会生效App-nvue 3.1.0+、微信小程序

markertap:点击标记图标事件,这里传的是marker中的ID, 所以你需要将id关联其他详细数据。我这里采用的是数组下标作为marker的ID, 因为我的poiLit的item中包含了marker的信息和其他详细数据,在取值的时候用markerId作为数组索引取值很方便

scale: 是地图缩放的范围,根据自身场景调整

latitude, longitude 当前坐标经纬度就不详细说了,通过uni.getLocation获取就可以了

callout: 标记图标上的气泡, 属性说明见下方表格

item["callout"] = {
content:item.title, display: "ALWAYS", 
bgColor: "#39B54A", color: "#fff", 
borderRadius: 15, padding: '10'}

marker 上的气泡 callout

属性说明类型平台差异说明
content文本StringApp-nvue 2.1.5+、微信小程序、H5、百度小程序、京东小程序、支付宝小程序
color文本颜色StringApp-nvue 2.1.5+、微信小程序、H5、百度小程序、京东小程序
fontSize文字大小NumberApp-nvue 2.1.5+、微信小程序、H5、百度小程序、京东小程序
borderRadiuscallout边框圆角NumberApp-nvue 2.1.5+、微信小程序、H5、百度小程序、京东小程序
borderWidth边框宽度Number微信小程序、京东小程序、百度小程序
borderColor边框颜色String微信小程序、京东小程序、百度小程序
bgColor背景色StringApp-nvue 2.1.5+、微信小程序、H5、百度小程序、京东小程序
padding文本边缘留白NumberApp-nvue 2.1.5+、微信小程序、H5、百度小程序、京东小程序
display'BYCLICK':点击显示; 'ALWAYS':常显StringApp-nvue 2.1.5+、微信小程序、H5、百度小程序、京东小程序
textAlign文本对齐方式。有效值: left, right, centerStringApp-nvue 2.1.5+、微信小程序、百度小程序、京东小程序
anchorX横向偏移量,向右为正数Number微信小程序2.11.0
anchorY纵向偏移量,向下为正数Number微信小程序2.11.0
UniApp 是一个跨平台的开发框架,支持使用多种前端技术开发包括微信小程序、H5、Android、iOS 等多个平台的应用程序。 要在 UniApp 使用地图功能,你可以通过两种方式来实现: 1. 使用第三方地图 SDK,如高德地图 SDK、百度地图 SDK 等。这些 SDK 都提供了详细的使用文档,你可以根据文档来进行开发。 2. 使用 UniApp 自带的原生组件 uni-mpvue-mapuni-app-plus uniMap 组件。 如果你选择使用第三方地图 SDK,需要先在 UniApp 项目引入相应的 SDK,并在页面使用 SDK 提供的 API 来实现地图功能。以高德地图 SDK 为例,你可以参考以下步骤来实现: 1. 在 `manifest.json` 文件添加 SDK 配置信息: ``` "permission":{ "scope.userLocation": { "desc": "你的位置信息将用于小程序位置接口的效果展示" } }, "app-plus": { "modules": { "amap": { "apiKey": "your amap key" } } } ``` 2. 在页面引入高德地图 SDK: ``` import amap from '@@/modules/amap/jsapi' ``` 3. 在页面使用 SDK 提供的 API 实现地图功能: ``` <template> <view class="map-container"> <view class="map" id="map"></view> </view> </template> <script> export default { data() { return { map: null } }, mounted() { this.initMap() }, methods: { async initMap() { const { status } = await uni.authorize({ scope: 'scope.userLocation' }) if (status === 'ok') { const amapApi = await amap.initAMapApi() this.map = new amapApi.Map('map', { zoom: 15, center: [116.39, 39.9] }) } } } } </script> ``` 以上代码实现了在页面显示一个地图,并将地图的缩放等级设置为 15,心点坐标设置为 [116.39, 39.9]。 如果你选择使用 UniApp 自带的原生组件,需要先在页面引入组件,并在页面使用组件提供的 API 来实现地图功能。以 uni-mpvue-map 组件为例,你可以参考以下步骤来实现: 1. 在页面引入 uni-mpvue-map 组件: ``` <template> <view class="map-container"> <uni-mpvue-map :longitude="116.39" :latitude="39.9" :scale="15" ></uni-mpvue-map> </view> </template> <script> import uniMpvueMap from '@/components/uni-mpvue-map/uni-mpvue-map.vue' export default { components: { uniMpvueMap } } </script> ``` 2. 在 `manifest.json` 文件添加权限配置信息: ``` "permission":{ "scope.userLocation": { "desc": "你的位置信息将用于小程序位置接口的效果展示" } } ``` 以上代码实现了在页面显示一个地图,并将地图的缩放等级设置为 15,心点坐标设置为 [116.39, 39.9]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值