<map id="map" longitude="{{longitude}}" circles="{{circles}}" show-location latitude="{{latitude}}" scale="14" bindmarkertap="handleMarkerTap" bindtap="tapMap" style="width:100%;height:90%;"></map>
circles:[
{
longitude: 113.324520,
latitude: 23.099994,
radius:500,
strokeWidth:1,
color:'#E41F18'
}
],
getDistance(lat1, lon1, lat2, lon2) {
const R = 6371000;
const toRad = (d) => d * Math.PI / 180;
const dLat = toRad(lat2 - lat1);
const dLon = toRad(lon2 - lon1);
const a = Math.sin(dLat / 2) ** 2 +
Math.cos(toRad(lat1)) * Math.cos(toRad(lat2)) *
Math.sin(dLon / 2) ** 2;
return R * (2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)));
},
isInCircle(currentLat, currentLon, circleLat, circleLon, radius) {
const distance = this.getDistance(currentLat, currentLon, circleLat, circleLon);
return distance <= radius;
},
tapMap(e){
console.log(e,'点击地图');
const tappedLocation = e.detail;
if (this.isInCircle(
tappedLocation.latitude,tappedLocation.longitude,
this.data.circles[0].latitude, this.data.circles[0].longitude,
this.data.circles[0].radius
)) {
wx.showToast({
title:'在范围内',
icon:'none'
})
} else {
wx.showToast({
title:'很遗憾',
icon:'none'
})
}
},
不是啥啊,说清楚问题
点击我画红线的地方,不打印数据,点击绿色黄色的才打印数据?原因是啥?bindpoitap 事件回调里 重新调用 bindtap 就可以了 把event传过去
刚试了 bindtap有回调
你tapMap有触发吗