2
0

index.html 40 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8" />
  5. <link href="../lib/main.css" rel="stylesheet" />
  6. <script src="../public/js/jquery.js"></script>
  7. <script src="../public/js/comm.js"></script>
  8. <script src="jquery-3.3.1.min.js"></script>
  9. <script src="julian.js"></script>
  10. <script src="lune.js"></script>
  11. <script src="suncalc.js"></script>
  12. <script src="./planet_position/js/planet-positions.js"></script>
  13. <script src="city_15000.js"></script>
  14. <script src="../studio/js/fixedsticky.js"></script>
  15. <script src="../guide/guide.js"></script>
  16. <link type="text/css" rel="stylesheet" href="../guide/guide.css" />
  17. <script src="../public/js/marked.js"></script>
  18. <!--获取语言-->
  19. <script>
  20. var g_language = getCookie("language");
  21. </script>
  22. <script>
  23. var localString = new Array();
  24. localString["zh-cn"] = {
  25. and_another: "又 ",
  26. atitude: "纬度",
  27. BE: "佛历",
  28. bhumma: "周二",
  29. budha: "周三",
  30. canda: "周一",
  31. confirm: "确认",
  32. date: "日期",
  33. day: "日",
  34. days: "天 ",
  35. departure_in_detail: "起飞详情",
  36. dhamma_time: "会延续五千年的教法 ",
  37. eat: "进餐",
  38. gama_entry: "入村",
  39. guru: "周四",
  40. hori_ref_time: "蒙气差修正 ",
  41. kala: "适当的时间",
  42. language_select: "选择语言",
  43. left: "还剩下",
  44. loading: "载入中……",
  45. longitude: "经度",
  46. māsa: "月",
  47. mins: "分钟",
  48. month: "月 ",
  49. month_1: "月 ",
  50. months: "个月 ",
  51. my_loc: "我的位置",
  52. need_inform: "未告知其他比库",
  53. no_string: "不能",
  54. noon_time: "正午",
  55. noon_time: "正午",
  56. note: "注释",
  57. now_time: "现在",
  58. pacchā_māsa: "下个月",
  59. pakkha: "月相变化 ",
  60. past: "已过去",
  61. pubba_māsa: "上个月",
  62. ravi: "周日",
  63. saṃvacchara: "年",
  64. season: "季节 ",
  65. sec: "秒",
  66. sora: "周六",
  67. sukka: "周五",
  68. sun_height_degree: "正午太阳高度 ",
  69. time: "时间",
  70. twilight_time: "曙光",
  71. twilight_time: "曙光",
  72. vikala: "不适当的时间",
  73. week_day: "星期",
  74. year_0: "年",
  75. year_1: "年 ",
  76. years: "年 ",
  77. yes_string: "可以",
  78. timezone: "时区",
  79. local: "本地",
  80. loading: "载入中",
  81. sun_set: "日落",
  82. unknown: "未知",
  83. altitude: "海拔",
  84. today: "今天",
  85. week: "周",
  86. list: "列表",
  87. location: "所在地",
  88. };
  89. localString["zh-tw"] = {
  90. and_another: "又 ",
  91. atitude: "緯度",
  92. BE: "佛曆",
  93. bhumma: "週二",
  94. budha: "週三",
  95. canda: "週一",
  96. confirm: "確認",
  97. date: "日期",
  98. day: "日",
  99. days: "天 ",
  100. departure_in_detail: "起飛詳情",
  101. dhamma_time: "會延續五千年的教法 ",
  102. eat: "進餐",
  103. gama_entry: "入村",
  104. guru: "週四",
  105. hori_ref_time: "蒙氣差修正 ",
  106. kala: "適當的時間",
  107. language_select: "選擇語言",
  108. left: "還剩下",
  109. loading: "載入中……",
  110. longitude: "經度",
  111. māsa: "月",
  112. mins: "分鐘",
  113. month: "月 ",
  114. month_1: "月 ",
  115. months: "個月 ",
  116. my_loc: "我的位置",
  117. need_inform: "未告知其他比庫",
  118. no_string: "不能",
  119. noon_time: "正午",
  120. noon_time: "正午",
  121. note: "註釋",
  122. now_time: "現在",
  123. pacchā_māsa: "下個月",
  124. pakkha: "月相變化 ",
  125. past: "已過去",
  126. pubba_māsa: "上個月",
  127. ravi: "週日",
  128. saṃvacchara: "年",
  129. season: "季節 ",
  130. sec: "秒",
  131. sora: "週六",
  132. sukka: "週五",
  133. sun_height_degree: "正午太陽高度 ",
  134. time: "時間",
  135. twilight_time: "曙光",
  136. twilight_time: "曙光",
  137. vikala: "不適當的時間",
  138. week_day: "星期",
  139. year_0: "年",
  140. year_1: "年 ",
  141. years: "年 ",
  142. yes_string: "可以",
  143. timezone: "時區",
  144. local: "本地",
  145. loading: "載入中",
  146. sun_set: "日落",
  147. unknown: "未知",
  148. altitude: "海拔",
  149. today: "今天",
  150. week: "周",
  151. list: "列表",
  152. location: "所在地",
  153. };
  154. localString["default"] = {
  155. and_another: " and ",
  156. atitude: "Atitude",
  157. BE: "Buddhist Era ",
  158. bhumma: "Bhumma",
  159. budha: "Budha",
  160. canda: "Canda",
  161. confirm: "Confirm",
  162. date: "Date ",
  163. day: " day(s) ",
  164. days: " day(s) ",
  165. departure_in_detail: "departure in detail",
  166. dhamma_time: "5000 Years of the Buddha’s Dispensation ",
  167. eat: "eat",
  168. gama_entry: "entry the village",
  169. guru: "Guru",
  170. hori_ref_time: "horizontal refraction correct ",
  171. kala: "suitable time",
  172. language_select: "bhāsā",
  173. left: "Remains ",
  174. loading: "loading…",
  175. longitude: "Longitude",
  176. māsa: "māsa",
  177. mins: "(min)",
  178. month: "Month ",
  179. month_1: "- ",
  180. months: " month(s) ",
  181. my_loc: "attasmiṃ",
  182. need_inform: "without informing other Bhikkhu ",
  183. no_string: "cannot ",
  184. noon_time: "NOON",
  185. noon_time: "NOON",
  186. note: "Note",
  187. now_time: "NOW",
  188. pacchā_māsa: "pacchā-māsa",
  189. pakkha: "Lunar Phases ",
  190. past: "Passed ",
  191. pubba_māsa: "pubba-māsa",
  192. ravi: "Ravi",
  193. saṃvacchara: "saṃvacchara",
  194. season: "Season ",
  195. sec: "sec ",
  196. sora: "Sora",
  197. sukka: "Sukka",
  198. sun_height_degree: "Max solar altitude ",
  199. time: "Time",
  200. twilight_time: "dawn",
  201. twilight_time: "dawn",
  202. vikala: "unsuitable time",
  203. week_day: "Day",
  204. year_0: "saṃvacchara",
  205. year_1: "- ",
  206. years: " year(s) ",
  207. yes_string: "can ",
  208. timezone: "Timezone",
  209. local: "local",
  210. loading: "loading",
  211. sun_set: "sunset",
  212. unknown: "unknown",
  213. altitude: "Altitude",
  214. today: "today",
  215. week: "week",
  216. list: "list",
  217. location: "location",
  218. };
  219. localString["en"] = {
  220. and_another: " and ",
  221. atitude: "Atitude",
  222. BE: "Buddhist Era ",
  223. bhumma: "Bhumma",
  224. budha: "Budha",
  225. canda: "Canda",
  226. confirm: "Confirm",
  227. date: "Date",
  228. day: " day(s) ",
  229. days: " day(s) ",
  230. departure_in_detail: "departure in detail",
  231. dhamma_time: "5000 Years of the Buddha’s Dispensation ",
  232. eat: "eat",
  233. gama_entry: "entry the village",
  234. guru: "Guru",
  235. hori_ref_time: "horizontal refraction correct ",
  236. kala: "suitable time",
  237. language_select: "Language",
  238. left: "Remains ",
  239. loading: "loading…",
  240. longitude: "Longitude",
  241. māsa: "māsa",
  242. mins: "(min)",
  243. month: "Month ",
  244. month_1: "- ",
  245. months: " month(s) ",
  246. my_loc: "my location",
  247. need_inform: "without informing other Bhikkhu ",
  248. no_string: "cannot ",
  249. noon_time: "NOON",
  250. noon_time: "NOON",
  251. note: "Note",
  252. now_time: "NOW",
  253. pacchā_māsa: "pacchā-māsa",
  254. pakkha: "Lunar Phases ",
  255. past: "Passed ",
  256. pubba_māsa: "pubba-māsa",
  257. ravi: "Ravi",
  258. saṃvacchara: "saṃvacchara",
  259. season: "Season ",
  260. sec: "sec",
  261. sora: "Sora",
  262. sukka: "Sukka",
  263. sun_height_degree: "Max solar altitude ",
  264. time: "time",
  265. twilight_time: "dawn",
  266. twilight_time: "dawn",
  267. vikala: "unsuitable time",
  268. week_day: "Day",
  269. year_0: "year",
  270. year_1: "- ",
  271. years: " year(s) ",
  272. yes_string: "can ",
  273. timezone: "Timezone",
  274. local: "local",
  275. loading: "loading",
  276. sun_set: "sunset",
  277. unknown: "unknown",
  278. altitude: "Altitude",
  279. today: "today",
  280. week: "week",
  281. list: "list",
  282. location: "location",
  283. };
  284. localString["my"] = {
  285. and_another: " and ",
  286. atitude: "Atitude",
  287. BE: "Buddhist Era ",
  288. bhumma: "ဘုမ္မ",
  289. budha: "ဗုဓ",
  290. canda: "စန္ဒ",
  291. confirm: "Confirm",
  292. date: "Date ",
  293. day: " day(s) ",
  294. days: " day(s) ",
  295. departure_in_detail: "departure in detail",
  296. dhamma_time: "5000 Years of the Buddha’s Dispensation ",
  297. eat: "eat",
  298. gama_entry: "entry the village",
  299. guru: "ဂုရု",
  300. hori_ref_time: "horizontal refraction correct ",
  301. kala: "ကာလ",
  302. language_select: "ဘာသာ",
  303. left: "Remains ",
  304. loading: "loading…",
  305. longitude: "Longitude",
  306. māsa: "မာသ",
  307. mins: "(min)",
  308. month: "Month ",
  309. month_1: "- ",
  310. months: " month(s) ",
  311. my_loc: "အတ္တသ္မိံ",
  312. need_inform: "without informing other Bhikkhu ",
  313. no_string: "cannot ",
  314. noon_time: "မဇ္ဈန္ဟိက",
  315. noon_time: "မဇ္ဈန္ဟိက",
  316. note: "Note",
  317. now_time: "ပစ္စုပ္ပန္န",
  318. pacchā_māsa: "ပစ္ဆာ-မာသ",
  319. pakkha: "Lunar Phases ",
  320. past: "Passed ",
  321. pubba_māsa: "ပုဗ္ဗ-မာသ",
  322. ravi: "ရဝိ",
  323. saṃvacchara: "သံဝစ္ဆရ",
  324. season: "Season ",
  325. sec: "sec ",
  326. sora: "သောရ",
  327. sukka: "သုက္က",
  328. sun_height_degree: "Max solar altitude ",
  329. time: "Time",
  330. twilight_time: "အရုဏုဂ္ဂမန",
  331. twilight_time: "အရုဏုဂ္ဂမန",
  332. vikala: "ဝိကာလ",
  333. week_day: "Day",
  334. year_0: "year",
  335. year_1: "- ",
  336. years: " year(s) ",
  337. yes_string: "can ",
  338. timezone: "Timezone",
  339. local: "local",
  340. loading: "loading",
  341. sun_set: "sunset",
  342. unknown: "unknown",
  343. altitude: "Altitude",
  344. today: "today",
  345. week: "week",
  346. list: "list",
  347. location: "location",
  348. };
  349. localString["si"] = {
  350. and_another: " ච ",
  351. atitude: "Atitude",
  352. BE: "බුද්ධ වර්ෂය ",
  353. bhumma: "භුම්ම",
  354. budha: "බුධ",
  355. canda: "චන්ද",
  356. confirm: "Confirm",
  357. date: "දිවස ",
  358. day: " දිවසා(නි) ",
  359. days: " දිවසා(නි) ",
  360. departure_in_detail: "departure in detail",
  361. dhamma_time: "සම්මා සම්බුද්ධස්ස සාසනං පට්ච-වස්ස-සහස්සානි පවත්තිස්සති ",
  362. eat: "eat",
  363. gama_entry: "entry the village",
  364. guru: "ගු‍රු",
  365. hori_ref_time: "horizontal refraction correct ",
  366. kala: "කාල",
  367. language_select: "භාෂාව",
  368. left: "අවසිට්ඨ ",
  369. loading: "ප්‍රවේශනය වෙනවා ",
  370. longitude: "Longitude",
  371. māsa: "මාස",
  372. mins: "(min)",
  373. month: "මාස ",
  374. month_1: "- ",
  375. months: " මාසා(නි) ",
  376. my_loc: "අත‍්තස‍්මිං",
  377. need_inform: "without informing other Bhikkhu ",
  378. no_string: "cannot ",
  379. noon_time: "මජ්ඣන්හික",
  380. noon_time: "මජ්ඣන්හික",
  381. note: "නෝට්ටුව ",
  382. now_time: "පච්චුප්පන්න",
  383. pacchā_māsa: "පච්ඡා-මාස",
  384. pakkha: "පක්ඛ ",
  385. past: "අතික්කන්ත ",
  386. pubba_māsa: "පුබ්බ-මාස",
  387. ravi: "රවි",
  388. saṃvacchara: "සංවච්ඡ‍ර",
  389. season: "උතු ",
  390. sec: "sec",
  391. sora: "සො‍ර",
  392. sukka: "සුක්ක",
  393. sun_height_degree: "Max solar altitude ",
  394. time: "time",
  395. twilight_time: "අ‍රුණුග්ගමන",
  396. twilight_time: "අ‍රුණුග්ගමන",
  397. vikala: "විකාල",
  398. week_day: "වා‍ර ",
  399. year_0: "සංවච්ඡ‍ර",
  400. year_1: "- ",
  401. years: " සංවච්ඡ‍රා(නි) ",
  402. yes_string: "can ",
  403. timezone: "Timezone",
  404. local: "local",
  405. loading: "loading",
  406. sun_set: "sunset",
  407. unknown: "unknown",
  408. altitude: "Altitude",
  409. today: "today",
  410. week: "week",
  411. list: "list",
  412. location: "location",
  413. };
  414. var pali_month_name = [
  415. { id: "1", value: "jeṭṭha", season: "gimhāna", season_icon: "☀" }, //5.X-四-十五-心
  416. { id: "2", value: "asāḷha", season: "gimhāna", season_icon: "☀" }, //6.X-五-十五、十六-箕、斗
  417. { id: "3", value: "sāvana", season: "vassāna", season_icon: "☔" }, //7.X-六-十五-女
  418. { id: "4", value: "poṭṭhapāda", season: "vassāna", season_icon: "☔" }, //8.x-七-十五、十六-室、壁
  419. { id: "5", value: "assajuja", season: "vassāna", season_icon: "☔" }, //9.X-八-十五-樓
  420. { id: "6", value: "kattika", season: "vassāna", season_icon: "☔" }, //10.X-九-十五-昂
  421. { id: "7", value: "māgasira", season: "hemanta", season_icon: "❄" }, //11.X-十-十五-觜
  422. { id: "8", value: "phussa", season: "hemanta", season_icon: "❄" }, //12.X-十一-十五-鬼
  423. { id: "9", value: "māgha", season: "hemanta", season_icon: "❄" }, //1.X-十二-十五-星
  424. { id: "10", value: "phagguna", season: "hemanta", season_icon: "❄" }, //2.X-正月-十四、十五-張、異
  425. { id: "11", value: "citta", season: "gimhāna", season_icon: "☀" }, //3.X-二月-十五-角
  426. { id: "12", value: "vesākha", season: "gimhāna", season_icon: "☀" }, //4.X-三月-十五-氐
  427. ];
  428. var pali_nakkhatta_name = [
  429. { id: "0", value: "assayuja", name_zh: "娄宿" },
  430. { id: "1", value: "bharaṇī", name_zh: "胃宿" },
  431. { id: "2", value: "Kattikā", name_zh: "昂宿" },
  432. { id: "3", value: "rohiṇī", name_zh: "毕宿" },
  433. { id: "4", value: "magasira", name_zh: "觜宿" },
  434. { id: "5", value: "Addā", name_zh: "参宿" },
  435. { id: "6", value: "punabbasu", name_zh: "井宿" },
  436. { id: "7", value: "phussa", name_zh: "鬼宿" },
  437. { id: "8", value: "Asilesā", name_zh: "柳宿" },
  438. { id: "9", value: "maghā", name_zh: "星宿" },
  439. { id: "10", value: "pubbaphagguṇī", name_zh: "张宿" },
  440. { id: "11", value: "uttaraphagguṇī", name_zh: "翼宿" },
  441. { id: "12", value: "hattha", name_zh: "轸宿" },
  442. { id: "13", value: "cittā", name_zh: "角宿" },
  443. { id: "14", value: "sāti", name_zh: "亢宿" },
  444. { id: "15", value: "visākhā", name_zh: "氐宿" },
  445. { id: "16", value: "anurādhā", name_zh: "房宿" },
  446. { id: "17", value: "jeṭṭha", name_zh: "心宿" },
  447. { id: "18", value: "mūlā", name_zh: "尾宿" },
  448. { id: "19", value: "pubbāsāḷha", name_zh: "箕宿" },
  449. { id: "20", value: "uttarāsāḷha", name_zh: "斗宿" },
  450. { id: "21", value: "savaṇa", name_zh: "女宿" },
  451. { id: "22", value: "dhaniṭṭhā", name_zh: "虚宿" },
  452. { id: "23", value: "satabhisaja", name_zh: "危宿" },
  453. { id: "24", value: "pubbabhaddapadā", name_zh: "室宿" },
  454. { id: "25", value: "uttarabhaddapadā", name_zh: "壁宿" },
  455. { id: "26", value: "revatī", name_zh: "奎宿" },
  456. ];
  457. var horoscope_name = [
  458. { id: "0", value: "Aries", name_zh: "白羊", icon: "♈" },
  459. { id: "1", value: "Taurus", name_zh: "金牛", icon: "♉" },
  460. { id: "2", value: "Gemini", name_zh: "双子", icon: "♊" },
  461. { id: "3", value: "Cancer", name_zh: "巨蟹", icon: "♋" },
  462. { id: "4", value: "Leo", name_zh: "狮子", icon: "♌" },
  463. { id: "5", value: "Virgo", name_zh: "处女", icon: "♍" },
  464. { id: "6", value: "Libra", name_zh: "天秤", icon: "♎" },
  465. { id: "7", value: "Scorpio", name_zh: "天蝎", icon: "♏" },
  466. { id: "8", value: "Sagittarius", name_zh: "射手", icon: "♐" },
  467. { id: "9", value: "Capricornus", name_zh: "摩羯", icon: "♑" },
  468. { id: "10", value: "Aquarius", name_zh: "水瓶", icon: "♒" },
  469. { id: "11", value: "Pisces", name_zh: "双鱼", icon: "♓" },
  470. ];
  471. </script>
  472. <script>
  473. var current_phase = phase();
  474. console.log(current_phase); //输出到控制台
  475. //$("#title_text").html(localString[g_language].BE);
  476. var new_list = new Array(); //新月列表
  477. var first_list = new Array(); //上弦月列表
  478. var full_list = new Array(); //满月列表
  479. var last_list = new Array(); //下弦月列表
  480. var planets = new Array(); //
  481. var lunar_position = new Object();
  482. var g_coordinate_this = new Object();
  483. var g_now_date = new Date();
  484. var today = new Date();
  485. var start_day = new Date();
  486. var next_year = new Date();
  487. var sun_times = new Object();
  488. var curr_position="";
  489. curr_position = localStorage.getItem("local_position");
  490. if (curr_position) {
  491. g_coordinate_this.AT = curr_position.split("#")[0];
  492. g_coordinate_this.LT = curr_position.split("#")[1];
  493. g_coordinate_this.height = curr_position.split("#")[2];
  494. if (g_coordinate_this.AT >= 0) {
  495. var AT_string = angle_trans(g_coordinate_this.AT)[0]+"°" +angle_trans(g_coordinate_this.AT)[1] +
  496. "’" +
  497. angle_trans(g_coordinate_this.AT)[2] +
  498. "” N";
  499. } else {
  500. var AT_string = angle_trans(0-g_coordinate_this.AT)[0]+"°" +angle_trans(0-g_coordinate_this.AT)[1] +
  501. "’" +
  502. angle_trans(0-g_coordinate_this.AT)[2] +
  503. "” S";
  504. }
  505. if (g_coordinate_this.LT >= 0) {
  506. var LT_string = angle_trans(g_coordinate_this.LT)[0]+"°" +angle_trans(g_coordinate_this.LT)[1] +
  507. "’" +
  508. angle_trans(g_coordinate_this.LT)[2] +
  509. "” E";
  510. } else {
  511. var LT_string = angle_trans(0-g_coordinate_this.LT)[0]+"°" +angle_trans(0-g_coordinate_this.LT)[1] +
  512. "’" +
  513. angle_trans(0-g_coordinate_this.LT)[2] +
  514. "” W";
  515. }
  516. if (g_coordinate_this.height != "null") {
  517. var height_string = g_coordinate_this.height + "M";
  518. } else {
  519. var height_string = localString[g_language].unknown;
  520. }
  521. } else {
  522. getLocation();
  523. }
  524. function show_time() {
  525. if ($("#input_time").val()) {
  526. today = new Date($("#input_time").val());
  527. } else {
  528. today = g_now_date;
  529. }
  530. lunar_phase_list_refresh();
  531. get_position(today);
  532. let d_earth_to_moon =
  533. lunar_position.position.x ^
  534. (2 + lunar_position.position.y) ^
  535. (2 + lunar_position.position.z) ^
  536. 2 ^
  537. 0.5;
  538. let d_earth_to_moon_0 = phase(today).distance;
  539. sun_times = SunCalc.getTimes(
  540. today,
  541. g_coordinate_this.AT,
  542. g_coordinate_this.LT,
  543. g_coordinate_this.height / 1000
  544. );
  545. sun_position = SunCalc.getPosition(today, g_coordinate_this.AT, g_coordinate_this.LT);
  546. moon_position = SunCalc.getMoonPosition(today, g_coordinate_this.AT, g_coordinate_this.LT);
  547. moon_Illumination = SunCalc.getMoonIllumination(today);
  548. }
  549. //根据时间计算偏角,输出
  550. function get_position(date_time) {
  551. let planets_position = new Object();
  552. planets = window.lagrange.planet_positions.getPositions(date_time);
  553. //planets = global.planet_positions.getPositions(today);
  554. //console.log(planets)//输出到控制台
  555. earth_position = window.lagrange.planet_positions.getPositions(date_time)[3];
  556. lunar_position = window.lagrange.planet_positions.getPositions(date_time)[11];
  557. let lunar_position_angle = 0;
  558. let lunar_station = 0;
  559. let earth_position_angle = 0;
  560. let earth_station = 0;
  561. let earth_position_angle_round = 0;
  562. let lunar_position_angle_round = 0;
  563. //太阳相对地球的黄道偏角
  564. if (earth_position.position.y >= 0) {
  565. earth_position_angle = Math.atan2(earth_position.position.y, earth_position.position.x);
  566. } else {
  567. earth_position_angle =
  568. Math.PI * 2 + Math.atan2(earth_position.position.y, earth_position.position.x);
  569. }
  570. earth_position_angle_round = earth_position_angle / Math.PI / 2 + 0.5;
  571. earth_position_angle_round = earth_position_angle_round - Math.floor(earth_position_angle_round);
  572. earth_station = earth_position_angle_round * 12;
  573. planets_position.solar_station = earth_station;
  574. planets_position.solar_position_angle = earth_position_angle_round * Math.PI * 2;
  575. planets_position.solar_position_angle_round = earth_position_angle_round;
  576. //月球相对地球的黄道偏角——角度差算法
  577. lunar_position_angle_round = earth_position_angle_round + phase(date_time).phase;
  578. lunar_position_angle_round = lunar_position_angle_round - Math.floor(lunar_position_angle_round);
  579. lunar_position_angle = lunar_position_angle_round * Math.PI * 2;
  580. lunar_station = lunar_position_angle_round * 27;
  581. //月球相对地球的黄道偏角算法——向量差算法
  582. let lunar_to_earth = new Object();
  583. lunar_to_earth.y = lunar_position.position.y - earth_position.position.y;
  584. lunar_to_earth.x = lunar_position.position.x - earth_position.position.x;
  585. if (lunar_to_earth.y >= 0) {
  586. lunar_position_angle2 = Math.atan2(lunar_to_earth.y, lunar_to_earth.x);
  587. } else {
  588. lunar_position_angle2 = Math.PI * 2 + Math.atan2(lunar_to_earth.y, lunar_to_earth.x);
  589. }
  590. lunar_position_angle_round2 = lunar_position_angle2 / Math.PI / 2;
  591. //lunar_position_angle_round = lunar_position_angle_round - Math.floor(lunar_position_angle_round)
  592. lunar_position_angle2 = lunar_position_angle_round2 * Math.PI * 2;
  593. lunar_station2 = lunar_position_angle_round2 * 27;
  594. planets_position.lunar_station = lunar_station; //月站值【角度差算夹角】
  595. planets_position.lunar_position_angle = lunar_position_angle; //月站角【角度差算夹角】
  596. planets_position.lunar_position_angle_round = lunar_position_angle_round; //月站圆周比率【角度差算夹角】
  597. planets_position.lunar_station2 = lunar_station2; //月站值【矢量差算夹角】
  598. planets_position.lunar_position_angle2 = lunar_position_angle2; //月站角【矢量差算夹角】
  599. planets_position.lunar_position_angle_round2 = lunar_position_angle_round2; //月站圆周比率【矢量差算夹角】
  600. return planets_position;
  601. }
  602. //根据;
  603. function get_station_name(data_time) {
  604. //获取星象信息
  605. let solar_num = 0;
  606. let lunar_num = 0;
  607. solar_num = get_position(data_time).solar_station;
  608. solar_num = Math.floor(solar_num);
  609. lunar_num = get_position(data_time).lunar_station;
  610. lunar_num = Math.floor(lunar_num);
  611. let result = new Object();
  612. result.solar = horoscope_name[solar_num]; //黄道十二宫星象名称
  613. result.lunar = pali_nakkhatta_name[lunar_num]; //27星宿月站名称
  614. return result;
  615. }
  616. function getLocation() {
  617. //自动定位
  618. if (navigator.geolocation) {
  619. navigator.geolocation.getCurrentPosition(showPosition, showError);
  620. } else {
  621. $("#selected_position_string").html("Geolocation is not supported by this browser.");
  622. }
  623. }
  624. function position_input() {
  625. //手动输入
  626. var LT = Number($("#LT_°")[0].value);
  627. LT += Number($("#LT_’")[0].value) / 60;
  628. LT += Number($("#LT_”")[0].value) / 3600;
  629. LT = Number($("#WE")[0].value + LT);
  630. var AT = Number($("#AT_°")[0].value);
  631. AT += Number($("#AT_’")[0].value) / 60;
  632. AT += Number($("#AT_”")[0].value) / 3600;
  633. AT = Number($("#NS")[0].value + AT);
  634. if (AT != 0) {
  635. g_coordinate_this.LT = LT;
  636. g_coordinate_this.AT = AT;
  637. }
  638. }
  639. function showError(error) {
  640. switch (error.code) {
  641. case error.PERMISSION_DENIED:
  642. alert("定位失败,用户拒绝请求地理定位");
  643. break;
  644. case error.POSITION_UNAVAILABLE:
  645. alert("定位失败,位置信息是不可用");
  646. break;
  647. case error.TIMEOUT:
  648. alert("定位失败,请求获取用户位置超时");
  649. break;
  650. case error.UNKNOWN_ERROR:
  651. alert("定位失败,定位系统失效");
  652. break;
  653. }
  654. }
  655. function angle_trans(angle) {
  656. var angle_str = new Array();
  657. var num_d = Math.floor(angle);
  658. var num_m = Math.floor((angle - num_d) * 60);
  659. var num_s = Math.round((angle - num_d) * 60 - num_m);
  660. angle_str.push(num_d);
  661. angle_str.push(num_m);
  662. angle_str.push(num_s);
  663. return angle_str;
  664. }
  665. function input_position() {
  666. $("#position_input").show();
  667. }
  668. var g_event_list_arr = new Array();
  669. function get_event_arr() {
  670. let today = new Date();
  671. let date = new Date();
  672. for (i = -360; i < 360; i++) {
  673. date.setTime(today.getTime() + i * 3600 * 24 * 1000);
  674. let info_obj = new Object();
  675. info_obj.id = "dawn" + i;
  676. info_obj.title = localString[g_language].twilight_time;
  677. info_obj.start = SunCalc.getTimes(
  678. date,
  679. g_coordinate_this.AT,
  680. g_coordinate_this.LT,
  681. g_coordinate_this.height / 1000
  682. ).dawn;
  683. g_event_list_arr.push(info_obj);
  684. info_obj = new Object();
  685. info_obj.id = "noon" + i;
  686. info_obj.title = localString[g_language].noon_time;
  687. info_obj.start = SunCalc.getTimes(
  688. date,
  689. g_coordinate_this.AT,
  690. g_coordinate_this.LT,
  691. g_coordinate_this.height / 1000
  692. ).solarNoon;
  693. g_event_list_arr.push(info_obj);
  694. info_obj = new Object();
  695. info_obj.id = "sunset" + i;
  696. info_obj.title = localString[g_language].sun_set;
  697. info_obj.start = SunCalc.getTimes(
  698. date,
  699. g_coordinate_this.AT,
  700. g_coordinate_this.LT,
  701. g_coordinate_this.height / 1000
  702. ).sunset;
  703. g_event_list_arr.push(info_obj);
  704. }
  705. next_year.setDate(start_day.getDate() + 360);
  706. start_day.setDate(today.getDate() - 360);
  707. last_list = phaseRange(start_day, next_year, LAST); //获取下弦月列表
  708. for (i_last in last_list) {
  709. info_obj = new Object();
  710. info_obj.id = "last_moon" + i_last;
  711. info_obj.title = "🌗" + get_station_name(last_list[i_last]).lunar.value;
  712. info_obj.start = last_list[i_last];
  713. g_event_list_arr.push(info_obj);
  714. }
  715. new_list = phaseRange(start_day, next_year, NEW); //获取新月列表
  716. for (i_new in new_list) {
  717. info_obj = new Object();
  718. info_obj.id = "new_moon" + i_new;
  719. info_obj.title = "🌑" + get_station_name(new_list[i_new]).lunar.value;
  720. info_obj.start = new_list[i_new];
  721. g_event_list_arr.push(info_obj);
  722. }
  723. first_list = phaseRange(start_day, next_year, FIRST); //获取上弦月列表
  724. for (i_first in first_list) {
  725. info_obj = new Object();
  726. info_obj.id = "first_moon" + i_first;
  727. info_obj.title = "🌓" + get_station_name(first_list[i_first]).lunar.value;
  728. info_obj.start = first_list[i_first];
  729. g_event_list_arr.push(info_obj);
  730. }
  731. full_list = phaseRange(start_day, next_year, FULL); //获取满月列表
  732. for (i_full in full_list) {
  733. info_obj = new Object();
  734. info_obj.id = "full_moon" + i_full;
  735. info_obj.title = "🌕" + get_station_name(full_list[i_full]).lunar.value;
  736. info_obj.start = full_list[i_full];
  737. g_event_list_arr.push(info_obj);
  738. }
  739. /*console.log(last_list); //输出到控制台
  740. console.log(new_list); //输出到控制台
  741. console.log(first_list); //输出到控制台
  742. console.log(full_list); //输出到控制台*/
  743. }
  744. get_event_arr();
  745. </script>
  746. <script src="../lib/main.js"></script>
  747. <script>
  748. function getCookie(name) {
  749. var start = document.cookie.indexOf(name + "=");
  750. var len = start + name.length + 1;
  751. if (!start && name != document.cookie.substring(0, name.length)) {
  752. return null;
  753. }
  754. if (start == -1) return null;
  755. var end = document.cookie.indexOf(";", len);
  756. if (end == -1) end = document.cookie.length;
  757. return decodeURI(document.cookie.substring(len, end));
  758. }
  759. document.addEventListener("DOMContentLoaded", function () {
  760. var initialTimeZone = "local";
  761. var timeZoneSelectorEl = document.getElementById("time-zone-selector");
  762. var loadingEl = document.getElementById("loading");
  763. var calendarEl = document.getElementById("calendar");
  764. var calendar = new FullCalendar.Calendar(calendarEl, {
  765. timeZone: initialTimeZone,
  766. locale: getCookie("language"),
  767. headerToolbar: {
  768. left: "prev,next today",
  769. center: "title",
  770. right: "dayGridMonth,timeGridWeek,timeGridDay,listWeek",
  771. },
  772. //initialDate: "2020-12-12",
  773. navLinks: true, // can click day/week names to navigate views
  774. editable: true,
  775. selectable: true,
  776. dayMaxEvents: true, // allow "more" link when too many events
  777. //resources: g_event_list_arr,
  778. events: g_event_list_arr,
  779. defaultTimedEventDuration: "00:01",
  780. eventClick: function (info) {
  781. info.jsEvent.preventDefault(); // don't let the browser navigate
  782. if (info.event.url) {
  783. window.open(info.event.url);
  784. }
  785. },
  786. loading: function (bool) {
  787. if (bool) {
  788. loadingEl.style.display = "inline"; // show
  789. } else {
  790. loadingEl.style.display = "none"; // hide
  791. }
  792. },
  793. eventTimeFormat: { hour: "numeric", minute: "2-digit" },
  794. dateClick: function (arg) {
  795. console.log("dateClick", calendar.formatIso(arg.date));
  796. },
  797. select: function (arg) {
  798. console.log("select", calendar.formatIso(arg.start), calendar.formatIso(arg.end));
  799. },
  800. });
  801. calendar.render();
  802. // load the list of available timezones, build the <select> options
  803. // it's HIGHLY recommended to use a different library for network requests, not this internal util func
  804. FullCalendar.requestJson(
  805. "GET",
  806. "php/get-time-zones.php",
  807. {},
  808. function (timeZones) {
  809. timeZones.forEach(function (timeZone) {
  810. var optionEl;
  811. if (timeZone !== "UTC") {
  812. // UTC is already in the list
  813. optionEl = document.createElement("option");
  814. optionEl.value = timeZone;
  815. optionEl.innerText = timeZone;
  816. timeZoneSelectorEl.appendChild(optionEl);
  817. }
  818. });
  819. },
  820. function () {
  821. // TODO: handle error
  822. }
  823. );
  824. // when the timezone selector changes, dynamically change the calendar option
  825. timeZoneSelectorEl.addEventListener("change", function () {
  826. calendar.setOption("timeZone", this.value);
  827. });
  828. });
  829. </script>
  830. <style>
  831. body {
  832. margin: 0;
  833. padding: 0;
  834. font-family: Arial, Helvetica Neue, Helvetica, sans-serif;
  835. font-size: 14px;
  836. }
  837. #top {
  838. background: #eee;
  839. border-bottom: 1px solid #ddd;
  840. padding: 0 10px;
  841. line-height: 40px;
  842. font-size: 12px;
  843. }
  844. .left {
  845. float: left;
  846. }
  847. .right {
  848. float: right;
  849. }
  850. .clear {
  851. clear: both;
  852. }
  853. #script-warning,
  854. #loading {
  855. display: none;
  856. }
  857. #script-warning {
  858. font-weight: bold;
  859. color: red;
  860. }
  861. #calendar {
  862. max-width: 1100px;
  863. margin: 40px auto;
  864. padding: 0 10px;
  865. }
  866. .tzo {
  867. color: #000;
  868. }
  869. input[type="number" i] {
  870. width: 2.5em;
  871. }
  872. </style>
  873. </head>
  874. <body>
  875. <div id="top" style="display: inline-flex;width: 100vw;">
  876. <div class="left" style="display: inline-flex;height: 5vh;margin: auto 1em;">
  877. <span style="line-height: 5vh;white-space: nowrap;">
  878. <script>
  879. document.write(localString[g_language].timezone + ":");
  880. </script>
  881. </span>
  882. <select id="time-zone-selector">
  883. <option value="local" selected>
  884. <script>
  885. document.write(localString[g_language].local);
  886. </script>
  887. </option>
  888. <option value="UTC">UTC</option>
  889. </select>
  890. </div>
  891. <div style="display: inline-block; width: 50%; justify-content: center; margin-left: 20%">
  892. <div style="line-height: 2em; margin-top: 7px">
  893. <script>
  894. document.write(localString[g_language].atitude);
  895. </script>
  896. <span id="AT_str" onclick="show_ele(this)"></span>
  897. <span class="coordinate_input" style="flex: 7; white-space: nowrap; display: none">
  898. <input id="AT_°" type="number" min="0" max="89" /> °
  899. <input id="AT_’" type="number" min="0" max="59" /> ’
  900. <input id="AT_”" type="number" min="0" max="59" /> ”
  901. <select id="NS">
  902. <option value="+">N</option>
  903. <option value="-">S</option>
  904. </select>
  905. <button onclick="coordinate_confirm('AT')">
  906. <script>
  907. document.write(localString[g_language].confirm);
  908. </script>
  909. </button>
  910. </span>
  911. </div>
  912. <div style="line-height: 2em">
  913. <script>
  914. document.write(localString[g_language].longitude);
  915. </script>
  916. <span id="LT_str" onclick="show_ele(this)"></span>
  917. <span
  918. class="coordinate_input"
  919. onblur="show_ele(this)"
  920. style="flex: 7; white-space: nowrap; display: none"
  921. >
  922. <input id="LT_°" type="number" min="0" max="179" style="width: 3em" /> °
  923. <input id="LT_’" type="number" min="0" max="59" /> ’
  924. <input id="LT_”" type="number" min="0" max="59" /> ”
  925. <select id="WE">
  926. <option value="+">E</option>
  927. <option value="-">W</option>
  928. </select>
  929. <button onclick="coordinate_confirm('LT')">
  930. <script>
  931. document.write(localString[g_language].confirm);
  932. </script>
  933. </button>
  934. </span>
  935. </div>
  936. <div style="line-height: 2em">
  937. <script>
  938. document.write(localString[g_language].altitude);
  939. </script>
  940. <span id="altitude_string" onclick="show_ele(this)"></span>
  941. <span class="coordinate_input" style="flex: 7; white-space: nowrap; display: none">
  942. <input id="HT_M" type="number" min="0" max="19999" style="width: 4em" /> M
  943. <button onclick="coordinate_confirm('HT')">
  944. <script>
  945. document.write(localString[g_language].confirm);
  946. </script>
  947. </button>
  948. </span>
  949. </div>
  950. </div>
  951. <div style="display: inline-block; width: 50%; justify-content: center;">
  952. <script>
  953. document.write(localString[g_language].location);
  954. </script>
  955. <span id="city_str" onclick=""></span>
  956. </div>
  957. <div class="right">
  958. <span id="loading">
  959. <script>
  960. document.write(localString[g_language].loading + "…");
  961. </script>
  962. </span>
  963. <span id="script-warning"><code>php/get-events.php</code> must be running.</span>
  964. </div>
  965. <div class="clear"></div>
  966. </div>
  967. <div id="calendar"></div>
  968. </body>
  969. <script>
  970. function position_modify() {
  971. var LT = Number($("#LT_°")[0].value);
  972. LT += Number($("#LT_’")[0].value) / 60;
  973. LT += Number($("#LT_”")[0].value) / 3600;
  974. LT = Number($("#WE")[0].value + LT);
  975. var AT = Number($("#AT_°")[0].value);
  976. AT += Number($("#AT_’")[0].value) / 60;
  977. AT += Number($("#AT_”")[0].value) / 3600;
  978. AT = Number($("#NS")[0].value + AT);
  979. if (AT != 0) {
  980. g_coordinate_this.LT = LT;
  981. g_coordinate_this.AT = AT;
  982. }
  983. g_coordinate_this.height=Number($("#HT_M")[0].value);
  984. //将新的坐标数据存到localStorage
  985. let position_string = g_coordinate_this.AT + "#" + g_coordinate_this.LT + "#" + g_coordinate_this.height;
  986. localStorage.setItem("local_position", position_string);
  987. show_position();
  988. }
  989. function position_modify_confirm(obj) {
  990. position_modify();
  991. show_ele(obj);
  992. }
  993. function show_ele(obj) {
  994. if ($(obj).siblings("span").css("display") == "none") {
  995. $(obj).hide();
  996. $(obj).siblings("span").show();
  997. } else {
  998. $(obj).show();
  999. $(obj).siblings("span").hide();
  1000. }
  1001. }
  1002. function getLocation() {
  1003. //自动定位
  1004. if (navigator.geolocation) {
  1005. navigator.geolocation.getCurrentPosition(showPosition, showError);
  1006. } else {
  1007. $("#selected_position_string").html("Geolocation is not supported by this browser.");
  1008. }
  1009. }
  1010. function position_input() {
  1011. //手动输入
  1012. var LT = Number($("#LT_°")[0].value);
  1013. LT += Number($("#LT_’")[0].value) / 60;
  1014. LT += Number($("#LT_”")[0].value) / 3600;
  1015. LT = Number($("#WE")[0].value + LT);
  1016. var AT = Number($("#AT_°")[0].value);
  1017. AT += Number($("#AT_’")[0].value) / 60;
  1018. AT += Number($("#AT_”")[0].value) / 3600;
  1019. AT = Number($("#NS")[0].value + AT);
  1020. if (AT != 0) {
  1021. g_coordinate_this.LT = LT;
  1022. g_coordinate_this.AT = AT;
  1023. }
  1024. }
  1025. function showError(error) {
  1026. switch (error.code) {
  1027. case error.PERMISSION_DENIED:
  1028. alert("定位失败,用户拒绝请求地理定位");
  1029. break;
  1030. case error.POSITION_UNAVAILABLE:
  1031. alert("定位失败,位置信息是不可用");
  1032. break;
  1033. case error.TIMEOUT:
  1034. alert("定位失败,请求获取用户位置超时");
  1035. break;
  1036. case error.UNKNOWN_ERROR:
  1037. alert("定位失败,定位系统失效");
  1038. break;
  1039. }
  1040. }
  1041. function coordinate_confirm(type){
  1042. switch(type){
  1043. case "AT":
  1044. show_ele('#AT_str');
  1045. break;
  1046. case "LT":
  1047. show_ele('#LT_str');
  1048. break;
  1049. case "HT":
  1050. show_ele('#altitude_string');
  1051. break;
  1052. }
  1053. position_modify();
  1054. }
  1055. function show_position(){
  1056. curr_position = localStorage.getItem("local_position");
  1057. if (curr_position) {
  1058. g_coordinate_this.AT = curr_position.split("#")[0];
  1059. g_coordinate_this.LT = curr_position.split("#")[1];
  1060. g_coordinate_this.height = curr_position.split("#")[2];
  1061. if (g_coordinate_this.AT >= 0) {
  1062. var AT_string = angle_trans(g_coordinate_this.AT)[0]+"°" +angle_trans(g_coordinate_this.AT)[1] +
  1063. "’" +
  1064. angle_trans(g_coordinate_this.AT)[2] +
  1065. "” N";
  1066. } else {
  1067. var AT_string = angle_trans(0-g_coordinate_this.AT)[0]+"°" +angle_trans(0-g_coordinate_this.AT)[1] +
  1068. "’" +
  1069. angle_trans(0-g_coordinate_this.AT)[2] +
  1070. "” S";
  1071. }
  1072. if (g_coordinate_this.LT >= 0) {
  1073. var LT_string = angle_trans(g_coordinate_this.LT)[0]+"°" +angle_trans(g_coordinate_this.LT)[1] +
  1074. "’" +
  1075. angle_trans(g_coordinate_this.LT)[2] +
  1076. "” E";
  1077. } else {
  1078. var LT_string = angle_trans(0-g_coordinate_this.LT)[0]+"°" +angle_trans(0-g_coordinate_this.LT)[1] +
  1079. "’" +
  1080. angle_trans(0-g_coordinate_this.LT)[2] +
  1081. "” W";
  1082. }
  1083. if (g_coordinate_this.height != "null") {
  1084. var height_string = g_coordinate_this.height + "M";
  1085. } else {
  1086. var height_string = localString[g_language].unknown;
  1087. }
  1088. } else {
  1089. getLocation();
  1090. }
  1091. $("#AT_str").html(AT_string);
  1092. $("#LT_str").html(LT_string);
  1093. $("#altitude_string").html(height_string);
  1094. if(g_coordinate_this.AT<0){
  1095. $("#AT_°")[0].value = angle_trans(0-g_coordinate_this.AT)[0];
  1096. $("#AT_’")[0].value = angle_trans(0-g_coordinate_this.AT)[1];
  1097. $("#AT_”")[0].value = angle_trans(0-g_coordinate_this.AT)[2];
  1098. $("#NS")[0].value="-";
  1099. }
  1100. else{
  1101. $("#AT_°")[0].value = angle_trans(g_coordinate_this.AT)[0];
  1102. $("#AT_’")[0].value = angle_trans(g_coordinate_this.AT)[1];
  1103. $("#AT_”")[0].value = angle_trans(g_coordinate_this.AT)[2];
  1104. $("#NS")[0].value="+";
  1105. }
  1106. if(g_coordinate_this.LT<0){
  1107. $("#LT_°")[0].value = angle_trans(0-g_coordinate_this.LT)[0];
  1108. $("#LT_’")[0].value = angle_trans(0-g_coordinate_this.LT)[1];
  1109. $("#LT_”")[0].value = angle_trans(0-g_coordinate_this.LT)[2];
  1110. $("#WE")[0].value="-";
  1111. }
  1112. else{
  1113. $("#LT_°")[0].value = angle_trans(g_coordinate_this.LT)[0];
  1114. $("#LT_’")[0].value = angle_trans(g_coordinate_this.LT)[1];
  1115. $("#LT_”")[0].value = angle_trans(g_coordinate_this.LT)[2];
  1116. $("#WE")[0].value="+";
  1117. }
  1118. $("#HT_M")[0].value = g_coordinate_this.height;
  1119. $("#city_str").html(find_city(g_coordinate_this.AT,g_coordinate_this.LT).name);
  1120. }
  1121. show_position();
  1122. $(document).ready(function () {
  1123. $("button").each(function () {
  1124. if ($(this).html() == "today") {
  1125. $(this).html(localString[g_language].today);
  1126. }
  1127. if ($(this).html() == "list") {
  1128. $(this).html(localString[g_language].list);
  1129. }
  1130. if ($(this).html() == "week") {
  1131. $(this).html(localString[g_language].week);
  1132. }
  1133. if ($(this).html() == "month") {
  1134. $(this).html(localString[g_language].month);
  1135. }
  1136. if ($(this).html() == "day") {
  1137. $(this).html(localString[g_language].day);
  1138. }
  1139. });
  1140. });
  1141. $(document).ready(function () {
  1142. $("button").click(function () {
  1143. $("button").each(function () {
  1144. if ($(this).html().indexOf("today") != -1) {
  1145. $(this).html(localString[g_language].today);
  1146. }
  1147. if ($(this).html().indexOf("list") != -1) {
  1148. $(this).html(localString[g_language].list);
  1149. }
  1150. if ($(this).html().indexOf("week") != -1) {
  1151. $(this).html(localString[g_language].week);
  1152. }
  1153. if ($(this).html().indexOf("month") != -1) {
  1154. $(this).html(localString[g_language].month);
  1155. }
  1156. if ($(this).html().indexOf("day") != -1 && $(this).html().indexOf("today") == -1) {
  1157. $(this).html(localString[g_language].day);
  1158. }
  1159. });
  1160. });
  1161. });
  1162. $(document).ready(function () {
  1163. $("div").click(function () {
  1164. $("button").each(function () {
  1165. if ($(this).html().indexOf("today") != -1) {
  1166. $(this).html(localString[g_language].today);
  1167. }
  1168. if ($(this).html().indexOf("list") != -1) {
  1169. $(this).html(localString[g_language].list);
  1170. }
  1171. if ($(this).html().indexOf("week") != -1) {
  1172. $(this).html(localString[g_language].week);
  1173. }
  1174. if ($(this).html().indexOf("month") != -1) {
  1175. $(this).html(localString[g_language].month);
  1176. }
  1177. if ($(this).html().indexOf("day") != -1 && $(this).html().indexOf("today") == -1) {
  1178. $(this).html(localString[g_language].day);
  1179. }
  1180. });
  1181. });
  1182. });
  1183. //给出两个经纬度坐标直接的距离
  1184. function distance(x, y) {
  1185. var toRadians = function(num) {
  1186. return num * Math.PI / 180;
  1187. };
  1188. var lat1 = x.latitude;
  1189. var lon1 = x.longitude;
  1190. var lat2 = y.latitude;
  1191. var lon2 = y.longitude;
  1192. var R = 6371; // km
  1193. var φ1 = toRadians(lat1);//纬度弧度1
  1194. var φ2 = toRadians(lat2);//纬度弧度2
  1195. var Δφ = toRadians(lat2 - lat1);//纬度弧度差
  1196. var Δλ = toRadians(lon2 - lon1);//经度弧度差
  1197. var a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) +
  1198. Math.cos(φ1) * Math.cos(φ2) *
  1199. Math.sin(Δλ / 2) * Math.sin(Δλ / 2);
  1200. var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
  1201. return R * c;
  1202. }
  1203. function find_city(latitude,longitude){
  1204. var point=new Object;
  1205. var point_X=new Object;
  1206. var city_info=new Object;
  1207. var min_S=10000
  1208. point.latitude=latitude;
  1209. point.longitude=longitude;
  1210. for(i in city_list){
  1211. point_X.latitude=city_list[i].latitude;
  1212. point_X.longitude=city_list[i].longitude;
  1213. if(distance(point,point_X)<min_S){
  1214. city_info=city_list[i];
  1215. min_S=distance(point,point_X);
  1216. }
  1217. }
  1218. if(min_S==10000){
  1219. city_info.name=localString[g_language].unknown;
  1220. city_info.asciiName=localString[g_language].unknown;
  1221. }
  1222. return(city_info);
  1223. }
  1224. </script>
  1225. </html>