微信小程序计算两坐标距离

微信小程序计算两坐标距离,第1张

对于iOS或者安卓同学来说,可能会觉得特别简单吧。OC里就有原生类CLLocation计算坐标点距离。当然,大多数时候我们都是直接使用第三方计算,比如百度SDK。

但是接触到微信小程序后,由于可能刚起步,许多API并不完善。像百度SDK关于微信小程序的就没有提供这样的接口去计算。 百度地图微信小程序JS API

仔细翻一番看看,在开发指南->获取地图数据 菜单下只看到4个最基本的功能(POI检索、POI检索热词联想、逆地址解析、天气查询),并没有看到关于计算距离的。看到这些还好,至少不会继续下去入坑了。

后来我就度娘了,第一条检索就是腾讯地图开放平台的内容。这也是为什么今天我要写这篇文章的原因,我入坑了。友情提示,使用腾讯地图确实可以计算两坐标距离,但是呢?只能是10km以内的距离。不然调用后返握帆回结果: status: 373, message: "起终点距离超长"

如果不在意只是10km以内距离的话,想要去集成腾讯地图SDK,文档在此  腾讯地图微信小程序JavaScript SDK

最终解决方案只能自段哪雹己算了,不用第三方了。

//计算两坐标点之间的距离

  getDistance: function (lat1, lng1, lat2, lng2) {

    lat1 = lat1 || 0

   缓首 lng1 = lng1 || 0

    lat2 = lat2 || 0

    lng2 = lng2 || 0

    var rad1 = lat1 * Math.PI / 180.0

    var rad2 = lat2 * Math.PI / 180.0

    var a = rad1 - rad2

    var b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0

    var r = 6378137

    return (r * 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(rad1) * Math.cos(rad2) * Math.pow(Math.sin(b / 2), 2)))).toFixed(0)

  },

需要注意的是,该方法返回单位为米,如果想要转换成公里,除以1000即可。

说明:该程序适缺游用于伏型销计算器 CASIO fx-4800,4850P,可计算线路中心的缓和曲线、圆曲线、直线段,中、边桩

坐标及切线方位角。

1、A? 输入转角:左转为负,右转为正

2、R? 输入圆曲线半径

3、LS? 输入缓和曲线长度

4、JD(DK)? 输入交点里程桩号

5、X(JD)? 输入本交点X坐标

6、Y(JD)? 输入本交点Y坐标

7、FWJ? 输入待求点切线方位角

9、J? 输入0程序计算中桩,输入1程序计算租蠢边桩

10、Z? 输入里程桩号

1 A:R:C“LS”:D“JD(DK)”

2 P=C∧2/24/R-C∧4/2688/R∧3

3 Q=C/2-C∧3/240/R∧2

4 B=90C/兀/R

5 T=(R+P)tan(AbsA/2)+Q◢

6 W=(R+P)/cos(A/2)-R◢

7 L=((AbsA)-2B)兀R/180+2C◢

8 G“ZH”=D-T◢

9 H“HY”=G+C◢

10 I“QZ”=G+L/2◢

11 K“YH”=G+L-C◢

12 M“HZ”=G+L◢

13 N”X(JD)”:E”Y(JD)”:F”FWJ”: J

14 A<0=>S=-1:≠=>S=1⊿ (提示:0为数字“0”)

15 U=F+A/2+90S

16 V=W+R

17 B=N+VcosU

18 O=E+VsinU (提示:O为字母“O”)

19 Lbl 1

20 {Z}

21 Z≤G=>L=T+G-Z

22 V=F+180

23 U=F

24 Goto 2⊿

25 Z≤H=>L=Z-G

26 V=L-L∧5/(90R∧2C∧2)

27 L=30L∧2S/(兀RC)

28 P=F+180

29 Q=F+L

30 U“FWJ”=F+3L◢

31 Goto 4⊿

32 Z≤K=>L=F+A/2+90S+180+180(Z-I)S/R/兀

33 U“FWJ”=L+90S◢

34 Goto 5⊿

35 Z≤M=>L=M-Z

36 V=L-L∧5/(90R∧2C∧2)

37 L=30SL∧2/(兀RC)

38 P=F+A

39 Q=F+A+180-L

40 U=F-3L+A◢

41 Goto4⊿

42 Z>M=>L=Z-M+T

43 U=F+A

44 V=U

45 Goto 2

46 Lbl 2

47 X=N+LcosV◢

48 Y=E+LsinV◢

49 Goto 6⊿

50 Lbl 3

51 {W}

52 P“XL”=X+Wcos(U-90) ◢

53 Q“YL”=Y+Wsin(U-90) ◢

54 P“XR”=X+Wcos(U+90) ◢

55 Q“YR”=Y+Wsin(U+90) ◢

56 Goto 1

57 Lbl 4

58 X=N+TcosP+VcosQ◢

59 Y=E+TsinP+VsinQ◢

60 Goto 6

61 Lbl 5

62 X=B+R cosL◢

63 Y=O+RsinL◢ (提示:O为字母“O”)

64 Goto 6

65 Lbl 6

66 J=1=>Goto 3⊿

67 Goto 1

注:

1、◢ 为输出指令,若在后面加上,即可显示前面的计算结果输出在屏幕上。

2、括号()为说明,请不要输入。

计算参数:

A?=53°12′46.1〃

R?=4500

LS?=360

JD(DK)?=10021.359

T=2434.65260

W=534.31251

L=4539.32398

ZH=7586.70640

HY=7946.70640

QZ=9856.36839

YH=11766.03038

HZ=12126.03038

X(JD)?=3378226.731

Y(JD)?=456053.721

FWJ?=98°56′55.62〃

J?=1

Z?=10000

核对结果:

FWJ=487°23′2.26〃

X=3377706.668

Y=455858.525

W?=10(……偏距)

XL=3377714.613(……偏左坐标)

YL=455864.5966(……偏左坐标)

XR=3377698.722(……偏右坐标)

YR=455852.4535(……偏右坐标)

[Excel]综合曲线坐标计算程序bata3

http://www.fffsky.com/blog/post/ZHQX-bata3.html

综合曲线坐标计算程序bata3

说明附属表

一、简要说明

1、本程序可对单圆曲线、对称缓和曲线、不对称缓和曲线进行中、边桩坐标计算。

2、数慧腊御据输入时应在"曲线要素表"中有浅黄底色的单元格区内输入、其他均为自动计算。

3、当线路az左转时,转角前面前岩加负号;当线路ay右转时,转角为正值输入。

4、只需输入"坐标计算表"的里程桩号、边桩偏距即可自动计算坐标。

5、计算边桩时交角均为90°。

6、"放样计算表"中可计算出前视方位角和距离,为现场放线人员局改减少了计算繁琐。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12494922.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-25
下一篇2025-08-25

发表评论

登录后才能评论

评论列表(0条)

    保存