地理信息方法封装更新

发布于 2024-08-21  210 次阅读


地图方法封装

安装 npm install mmps

判断两个点的距离

mmps.getDistance(lng1,lng1, lat1, lng2, lat2)

计算多个点的距离

mmps.getDistances([lng,lat],[lng,lat],[lng,lat])

wgs84转gcj02(国际转火星)

mmps.wgs84togcj02(lng, lat)
//已判断国内坐标不参与转换

gcj02转wgs84

mmps.gcj02towgs84(lng, lat)
已判断国外坐标不参与转换

xyz坐标系转摩卡托坐标(必应)

mmps.getQuadKey(x,y,z)

墨卡托坐标转xyz坐标系

mmps.getXYZ(quadKey)
//quadKey:必应四进制定位

点是否在区域中(可判断多个区域)

mmps.IsInBannedArea(lng, lat, disableArr)
//disableArr,四层数组,分别代表区域合集、单个区域的点合集、单个点、经度纬度
[[[lng,lat],[lng,lat],[lng,lat],[lng,lat],[lng,lat],[lng,lat]]]

判断四个点连成的两条线是否交叉

mmps.areaNotIntersect(points)
//points代表多个点位的集合,至少4个点位,否则直接判断未无交叉
//无交叉返回true,交叉则返回false
//points至少四个点
[{lat:"",lng:""},{lat:"",lng:""},{lat:"",lng:""},{lat:"",lng:""}]

//多个区域批量判定自交
aearArr.every(item=>areaNotIntersect(item.map(val=>({lat: val[0], lng: val[1]}))))
//aearArr格式
[[[lat,lng],[lat,lng],[lat,lng],[lat,lng],[lat,lng]],[[lat,lng],[lat,lng],[lat,lng],[lat,lng]]]

判断多个区域是否重叠

mmps.isPolygonsOverlap(polygons);
//重叠返回true,不重叠返回false
//polygons是一个二维数组
//格式[[[lat,lng],[lat,lng],[lat,lng],[lat,lng],[lat,lng]],[[lat,lng],[lat,lng],[lat,lng],[lat,lng],[lat,lng],[lat,lng]],[[lat,lng],[lat,lng],[lat,lng],[lat,lng]]]

一沙一世界,一花一天堂。君掌盛无边,刹那成永恒。