>我需要知道地图上的某个位置是否被用户查看,例如我有一个观点
{latititude:40,longtitude:32}
地图的视图由
{latitude: 32,longtitude:44, latitudeDelta:0.003,longtitudeDelta:0.005}
当地图放大和缩小时,数据的唯一区别是纬度三角洲和纵向三角洲
最终,当我越来越缩放时,地图上的点将不再可见
有人可以帮我建立这个计算吗,这将非常有帮助
我不能给你一个编码的解决方案,但你可以:
从三角洲获取直径(从地图的 2 个角度):
const diameter = Math.floor((location.latitudeDelta * 40008000) / 360)
然后计算 2 个位置之间的距离:
function distance(lon1, lat1, lon2, lat2) {
const R = 6371 // Radius of the earth in km
const dLat = (lat2 - lat1).toRad() // Javascript functions in radians
const dLon = (lon2 - lon1).toRad()
const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
Math.cos(lat1.toRad()) * Math.cos(lat2.toRad()) *
Math.sin(dLon / 2) * Math.sin(dLon / 2)
const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a))
const d = R * c // Distance in km
return d
}
// add this if toRad is undefined
if (typeof (Number.prototype.toRad) === 'undefined') {
Number.prototype.toRad = function() {
return this * Math.PI / 180
}
}
然后用直径和距离:
if ((diameter / 2) > distance) {
console.log('The location in in the map')
}