奋战了两天一夜,终于实现了map的多边形绘制功能。不得不说,过程有很多坑,但知道之后其实很好解决,就polygons中points的增加就卡了我很久。代码如下
wxml中的map增加:
bindtap="bindmaptap" polygons="{{polygon}}"
js里:
bindmaptap: function (e) {
var that = this;
var point1 = that.data.polygon[0].points
point1.push({
longitude: e.detail.longitude,
latitude: e.detail.latitude
})
that.setData({
polygon: [{
points: point1,
strokeWidth: 1,
strokeColor: '#FF0000DD',
fillColor: '#7cb5ec88'
}]
})
},
要注意的是,bindtap只有在2.9.0以上的版本才会返回经纬度信息,因此实现该功能要你的基础库是2.9.0以上的,在开发者工具》详情》本地设置》调试基础库里面更改基础库版本即可。
为了用户方便,我增加了清空多边形的按钮,代码很简单:
delAllPoint: function () {
var that = this;
var point1 = []
that.setData({
polygon: [{
points: point1,
strokeWidth: 1,
strokeColor: '#FF0000DD',
fillColor: '#7cb5ec88'
}]
})
},
插一个样式布局的坑,就是按钮的个性化样式设置,需要在wxml里面删除type="xxxx",然后app.json里面删除 "style":"v2"; 这一行就可以在wxss里面自由设置按钮的颜色高度宽度啦,比如
.but1 {
width: 42.5%;
margin-top: 10rpx;
margin-bottom: 10rpx;
background-color: rgb(7, 193, 96);
color: #FFF;
}