小程序地图组件的使用
map组件使用
需求
- 点击不同的地方,跳转到地图上该地方的位置
- 在目标位置上有显示目标位置的小图标
- 右下角有个回到当前位置的控件,点击后返回到当前位置
- 将文本输入到地图页面底部
解决?
- 在外部父级view上绑定索引index,通过e.currentTarget.dataset.index获取到当前点击的地方,然后通过url传递index过去,map组件通过onLoad接收点击的index,再通过id查询数据,并动态赋值;
- 给markers标记点传递经纬度;
- controls控件 bindcontroltap事件
- 地图优先级最高,只能使用cover-view显示文本
具体实现
起始页wxml
<view class="company-adress"> <view class="weui-loadmore weui-loadmore_line"> <view class="weui-loadmore__tips weui-loadmore__tips_in-line">公司地址</view> </view> <block wx:for="{{place}}" wx:key='index'> <view class="weui-media-box weui-media-box_text" bindtap="openMap" data-index="{{index}}"> <image class="pos-icon" src="../../youzan-image/pos.png"></image> <view class="weui-media-box__title weui-media-box__title_in-text">{{item.shortAddress}}</view> <view class="weui-cell__ft weui-cell__ft_in-access"></view> <view class="weui-media-box__desc">{{item.detailAddress}}</view> </view> </block> </view>
起始页事件js
openMap:function (e) { let index = e.currentTarget.dataset.index; wx.navigateTo({ url: `/pages/map/map?id=${index}`, }) },
跳转地图页wxml
<view class="container"> <map class="Map" latitude="{{latitude}}" longitude="{{longitude}}" scale="{{scale}}" controls="{{controls}}" show-location markers="{{markers}}" bindcontroltap="backToMyposition"> <cover-view class="footer"> <cover-view class="detail">{{shortAddress}}{{detailAddress}}</cover-view> </cover-view> </map> </view>
跳转地图页wxss
.container { width: 100%; height: 100vh; } .Map { position: absolute; top: 0; left: 0; right: 0; bottom: 0; width: 100%; height: 100%; z-index: 1; } .footer { position: fixed; bottom: 0; width: 100%; height: 200rpx; background-color: #fff; } .detail { display: block; width: 100%; float: left; padding-left: 15rpx; padding-top: 20rpx; bottom: 30rpx; word-wrap: break-word; font-size: 17px; color: #020202; }
跳转地图页js
import address from '../../api/address' const app = getApp() Page({ data: { latitude: '', longitude:'', shortAddress:'', detailAddress:'', scale: 18, controls: [], markers:[], }, onLoad: function (options) { const id = options.id; this.setData({ latitude:address[id].latitude, longitude:address[id].longitude, shortAddress: address[id].shortAddress, detailAddress: address[id].detailAddress, controls: [{ id: 0, iconPath: '../../youzan-image/back.png', position: { left:330, top:450, width:30, height:30, }, clickable: true }], markers:[{ iconPath: '../../youzan-image/position.png', id: 0, latitude: address[id].latitude, longitude: address[id].longitude, width: 20, height: 20 }] }) }, backToMyposition(e){ wx.getLocation({ type: 'gcj02', success: (res) => { console.log(res.latitude, res.longitude); this.setData({ latitude: res.latitude, longitude: res.longitude, scale: 18, }) } }) } })
相关推荐
Haines 2020-06-16
小猪猪 2020-02-08
yearHeaven 2019-11-11
85307360 2019-11-05
Haines 2019-10-23
oraulvo 2019-09-20
小猪猪 2019-05-23
Tyoocsdn 2019-05-18
小猪猪 2019-06-29
flybamboo 2019-06-29
Tyoocsdn 2018-01-22
hcl 2016-04-04
Haines 2015-12-18
zonehh 2019-06-27
flybamboo 2019-06-27
guoyuexuan 2019-05-20