let map = null; // 地图实例 let treeData = []; // 组织机构树数据 let nodeId = ""; // 当前选中的节点ID let cablewayList = []; // 索道列表 let towerList = [ { id: 159, towerName: "N1625", baiduLon: "106.88646740334597", baiduLat: "33.700951744939616", time1: "2025-05-18", time2: "2025-05-18", time3: "2025-05-18", time4: "2025-05-18", time5: "2025-05-18", time6: "2025-05-18", time7: "2025-05-18", time8: "2025-06-08", time9: "2025-06-08", time10: null, existSpan: 0, towerProgress: 9, }, { id: 160, towerName: "N1626", baiduLon: "106.89028474086506", baiduLat: "33.69829100705979", time1: "2025-05-18", time2: "2025-05-18", time3: "2025-05-18", time4: "2025-05-18", time5: "2025-05-18", time6: "2025-05-18", time7: "2025-05-18", time8: "2025-06-08", time9: "2025-06-08", time10: null, existSpan: 0, towerProgress: 9, }, { id: 161, towerName: "N1627", baiduLon: "106.89238887950556", baiduLat: "33.69682637914991", time1: "2025-05-18", time2: "2025-05-18", time3: "2025-05-18", time4: "2025-05-18", time5: "2025-05-18", time6: "2025-05-18", time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 6, }, { id: 162, towerName: "N1628", baiduLon: "106.89738088775557", baiduLat: "33.69483372250299", time1: "2025-05-18", time2: "2025-05-18", time3: "2025-05-18", time4: "2025-05-18", time5: "2025-05-18", time6: "2025-05-18", time7: null, time8: null, time9: null, time10: null, existSpan: 1, towerProgress: 6, }, { id: 163, towerName: "N1629", baiduLon: "106.9003291662435", baiduLat: "33.69379532140319", time1: "2025-05-18", time2: "2025-05-18", time3: "2025-05-18", time4: "2025-05-18", time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 1, towerProgress: 4, }, { id: 164, towerName: "N1630", baiduLon: "106.90434036919319", baiduLat: "33.6923821685985", time1: "2025-05-18", time2: "2025-05-18", time3: "2025-05-18", time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 3, }, { id: 165, towerName: "N1631", baiduLon: "106.9096172171291", baiduLat: "33.69051553273442", time1: "2025-05-18", time2: "2025-05-18", time3: "2025-05-18", time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 3, }, { id: 166, towerName: "N1632", baiduLon: "106.91221471544226", baiduLat: "33.68959255444022", time1: "2025-05-18", time2: "2025-05-18", time3: "2025-06-05", time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 3, }, { id: 167, towerName: "N1633", baiduLon: "106.9180613717821", baiduLat: "33.687501736760396", time1: "2025-05-18", time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 1, }, { id: 168, towerName: "N1634", baiduLon: "106.92270655632997", baiduLat: "33.68582552709554", time1: "2025-05-18", time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 1, }, { id: 169, towerName: "N1635", baiduLon: "106.92498856210685", baiduLat: "33.68499621636022", time1: "2025-05-18", time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 1, }, { id: 170, towerName: "N1636", baiduLon: "106.9305267748522", baiduLat: "33.68296873362536", time1: "2025-05-18", time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 1, }, { id: 171, towerName: "N1637", baiduLon: "106.9329949967278", baiduLat: "33.68205848602869", time1: "2025-05-18", time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 1, }, { id: 172, towerName: "N1638", baiduLon: "106.93828466115669", baiduLat: "33.676992660601165", time1: "2025-06-08", time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 1, }, { id: 173, towerName: "N1639", baiduLon: "106.94173374844513", baiduLat: "33.673683202707814", time1: "2025-06-08", time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 1, }, { id: 174, towerName: "N1640", baiduLon: "106.94649706492352", baiduLat: "33.66910694957852", time1: "2025-06-08", time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 1, }, { id: 175, towerName: "N1641", baiduLon: "106.95359152748001", baiduLat: "33.66228180606567", time1: "2025-06-08", time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 1, }, { id: 176, towerName: "N1642", baiduLon: "106.9598697289315", baiduLat: "33.65624025801406", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 177, towerName: "N1643", baiduLon: "106.96707458963886", baiduLat: "33.64931335834796", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 178, towerName: "N1644", baiduLon: "106.96752385868376", baiduLat: "33.646090556494485", time1: "2025-06-08", time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 1, }, { id: 179, towerName: "N1645", baiduLon: "106.96965840581376", baiduLat: "33.64015145834369", time1: "2025-06-08", time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 1, }, { id: 180, towerName: "N1646", baiduLon: "106.97066438335538", baiduLat: "33.63780210059811", time1: "2025-06-08", time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 1, }, { id: 181, towerName: "N1647", baiduLon: "106.97433064932336", baiduLat: "33.63459112065854", time1: "2025-06-08", time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 1, }, { id: 182, towerName: "N1648", baiduLon: "106.97975442670015", baiduLat: "33.62985340560501", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 183, towerName: "N1649", baiduLon: "106.98257619354851", baiduLat: "33.62739517838416", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 184, towerName: "N1650", baiduLon: "106.98691118503437", baiduLat: "33.62362824988726", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 185, towerName: "N1651", baiduLon: "106.98875401791942", baiduLat: "33.622030228307125", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 186, towerName: "N1652", baiduLon: "106.99127147684132", baiduLat: "33.614651140748265", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 187, towerName: "N1653", baiduLon: "106.99810080408797", baiduLat: "33.612189708638155", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 188, towerName: "N1654", baiduLon: "107.0002526011955", baiduLat: "33.6114208962854", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 189, towerName: "N1655", baiduLon: "107.00211025515449", baiduLat: "33.61075951665829", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 190, towerName: "N1656", baiduLon: "107.00387012732007", baiduLat: "33.6101344207792", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 191, towerName: "N1657", baiduLon: "107.01253439155236", baiduLat: "33.60970614045862", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 192, towerName: "N1658", baiduLon: "107.01491490461564", baiduLat: "33.60775702990676", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 193, towerName: "N1659", baiduLon: "107.01944532671492", baiduLat: "33.604048083850465", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 194, towerName: "N1660", baiduLon: "107.02210449781295", baiduLat: "33.60186988881606", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 195, towerName: "N1661", baiduLon: "107.02660556526162", baiduLat: "33.59817819719097", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 196, towerName: "N1662", baiduLon: "107.03310085996674", baiduLat: "33.594569469746865", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 197, towerName: "N1663", baiduLon: "107.03946534101858", baiduLat: "33.59100952543835", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 198, towerName: "N1664", baiduLon: "107.04324516097589", baiduLat: "33.58515597961924", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 199, towerName: "N1665", baiduLon: "107.04406869332647", baiduLat: "33.57639158525642", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 200, towerName: "N1666", baiduLon: "107.0444066517986", baiduLat: "33.572808311936555", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 201, towerName: "N1667", baiduLon: "107.04468075276424", baiduLat: "33.5699062730769", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 202, towerName: "N1668", baiduLon: "107.04522799379407", baiduLat: "33.564127717224785", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 203, towerName: "N1669", baiduLon: "107.04577208252945", baiduLat: "33.558394186880136", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 204, towerName: "N1670", baiduLon: "107.0476355403751", baiduLat: "33.5552376694631", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 205, towerName: "N1671", baiduLon: "107.0507857531852", baiduLat: "33.54989774018444", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 206, towerName: "N1672", baiduLon: "107.05228450385073", baiduLat: "33.548689726233455", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 207, towerName: "N1673", baiduLon: "107.05489548398486", baiduLat: "33.54658158464499", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 208, towerName: "N1674", baiduLon: "107.05684436089078", baiduLat: "33.54379581710383", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 209, towerName: "N1675", baiduLon: "107.05879303713415", baiduLat: "33.54100838095082", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 210, towerName: "N1676", baiduLon: "107.06111635626243", baiduLat: "33.538994336040695", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 211, towerName: "N1677", baiduLon: "107.06317325004818", baiduLat: "33.53720875592299", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 212, towerName: "N1678", baiduLon: "107.06439658363134", baiduLat: "33.536145577990986", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 213, towerName: "N1679", baiduLon: "107.06762079766484", baiduLat: "33.53502747746021", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 214, towerName: "N1680", baiduLon: "107.06930516644195", baiduLat: "33.53444167638022", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 215, towerName: "N1681", baiduLon: "107.07624864581945", baiduLat: "33.53342191892645", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 216, towerName: "N1682", baiduLon: "107.08154363582442", baiduLat: "33.5310902462067", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 217, towerName: "N1683", baiduLon: "107.08993563986478", baiduLat: "33.52740394448912", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 218, towerName: "N1684", baiduLon: "107.09557267697534", baiduLat: "33.52494258953695", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 219, towerName: "N1685", baiduLon: "107.10037727447943", baiduLat: "33.52285837121811", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 220, towerName: "N1686", baiduLon: "107.10364750780478", baiduLat: "33.52158862562809", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 221, towerName: "N1687", baiduLon: "107.10846453262809", baiduLat: "33.51973223148524", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 222, towerName: "N1688", baiduLon: "107.11181360703068", baiduLat: "33.51909205195407", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 223, towerName: "N1689", baiduLon: "107.1190312146702", baiduLat: "33.51774007671119", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 224, towerName: "N1690", baiduLon: "107.12327793191801", baiduLat: "33.517539827710856", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 225, towerName: "N1691", baiduLon: "107.13086378394082", baiduLat: "33.51720350226726", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 226, towerName: "N1692", baiduLon: "107.13616355549898", baiduLat: "33.51697698928074", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 227, towerName: "N1693", baiduLon: "107.14071279493577", baiduLat: "33.51678244906243", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 228, towerName: "N1694", baiduLon: "107.14305988460197", baiduLat: "33.51668042575018", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 229, towerName: "N1695", baiduLon: "107.15334861272618", baiduLat: "33.51924451640732", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 230, towerName: "N1696", baiduLon: "107.15824908235453", baiduLat: "33.5204400901242", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 231, towerName: "N1697", baiduLon: "107.16202273226484", baiduLat: "33.52134654031544", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 232, towerName: "N1698", baiduLon: "107.17055131491561", baiduLat: "33.52011467981102", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 233, towerName: "N1699", baiduLon: "107.17815871406033", baiduLat: "33.51896559856658", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 234, towerName: "N1700", baiduLon: "107.18001059744363", baiduLat: "33.51867917069031", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 235, towerName: "N1701", baiduLon: "107.18606800246044", baiduLat: "33.51772899954368", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 236, towerName: "N1702", baiduLon: "107.18920326565288", baiduLat: "33.51723052211384", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 237, towerName: "N1703", baiduLon: "107.19660835559884", baiduLat: "33.5175057248704", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 238, towerName: "N1704", baiduLon: "107.20533103305648", baiduLat: "33.515565363481976", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 239, towerName: "N1705", baiduLon: "107.20862535724639", baiduLat: "33.51574013897916", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 240, towerName: "N1706", baiduLon: "107.21325768073731", baiduLat: "33.51599615824992", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 241, towerName: "N1707", baiduLon: "107.22178964471689", baiduLat: "33.51650862624162", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 242, towerName: "N1708", baiduLon: "107.22665447356256", baiduLat: "33.51537989876462", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 243, towerName: "N1709", baiduLon: "107.23400914823021", baiduLat: "33.51371143843012", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 244, towerName: "N1710", baiduLon: "107.23820334156078", baiduLat: "33.512779775414145", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 245, towerName: "N1711", baiduLon: "107.24164261532059", baiduLat: "33.51202508648184", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 246, towerName: "N1712", baiduLon: "107.2498494998087", baiduLat: "33.51025173724062", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 247, towerName: "N1713", baiduLon: "107.25439894212967", baiduLat: "33.509063677486544", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 248, towerName: "N1714", baiduLon: "107.26123725021769", baiduLat: "33.50728244108538", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 249, towerName: "N1715", baiduLon: "107.26442692232902", baiduLat: "33.50644924751708", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 250, towerName: "N1716", baiduLon: "107.27231543218565", baiduLat: "33.504374917282064", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 251, towerName: "N1717", baiduLon: "107.27630860132699", baiduLat: "33.50331292798974", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 252, towerName: "N1718", baiduLon: "107.28093765204066", baiduLat: "33.50206852113215", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 253, towerName: "N1719", baiduLon: "107.2851483278103", baiduLat: "33.50092191348861", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 254, towerName: "N1720", baiduLon: "107.28861003397485", baiduLat: "33.49996904944689", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 255, towerName: "N1721", baiduLon: "107.29470024712839", baiduLat: "33.49827086210862", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 256, towerName: "N1722", baiduLon: "107.29921837953546", baiduLat: "33.496994333529614", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 257, towerName: "N1723", baiduLon: "107.30362201120606", baiduLat: "33.49769765852011", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 258, towerName: "N1724", baiduLon: "107.30828207421504", baiduLat: "33.49843051993899", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 259, towerName: "N1725", baiduLon: "107.31409706627703", baiduLat: "33.49798814696198", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 260, towerName: "N1726", baiduLon: "107.31636291865334", baiduLat: "33.49781449994312", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 261, towerName: "N1727", baiduLon: "107.3198278246054", baiduLat: "33.49754936191977", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 262, towerName: "N1728", baiduLon: "107.32388024657631", baiduLat: "33.49724169044543", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 263, towerName: "N1729", baiduLon: "107.32694773744468", baiduLat: "33.49701234734956", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 264, towerName: "N1730", baiduLon: "107.33237601593673", baiduLat: "33.49598376231999", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 265, towerName: "N1731", baiduLon: "107.3338979538333", baiduLat: "33.49594040770004", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 266, towerName: "N1732", baiduLon: "107.33825910838863", baiduLat: "33.49582498784957", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 267, towerName: "N1733", baiduLon: "107.34265738747352", baiduLat: "33.49572295968462", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 268, towerName: "N1734", baiduLon: "107.34744807384682", baiduLat: "33.49563121548856", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 269, towerName: "N1735", baiduLon: "107.35415843337002", baiduLat: "33.49468099740889", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 270, towerName: "N1736", baiduLon: "107.35983608078578", baiduLat: "33.49390418100815", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 271, towerName: "N1737", baiduLon: "107.3629757874049", baiduLat: "33.49348357598333", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 272, towerName: "N1738", baiduLon: "107.3662575682128", baiduLat: "33.49337463496614", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 273, towerName: "N1739", baiduLon: "107.37031162711268", baiduLat: "33.49324630623058", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 274, towerName: "N1740", baiduLon: "107.37489273391161", baiduLat: "33.49310620895069", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 275, towerName: "N1741", baiduLon: "107.38263855060835", baiduLat: "33.493148459160025", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 276, towerName: "N1742", baiduLon: "107.3853909663863", baiduLat: "33.49389025029422", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 277, towerName: "N1743", baiduLon: "107.38773358951195", baiduLat: "33.4945190264539", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 278, towerName: "N1744", baiduLon: "107.3942417607591", baiduLat: "33.49472608679089", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 279, towerName: "N1745", baiduLon: "107.39840136440802", baiduLat: "33.494842163647505", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 280, towerName: "N1746", baiduLon: "107.40232115718632", baiduLat: "33.494938295900155", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 281, towerName: "N1747", baiduLon: "107.40438390695732", baiduLat: "33.49498310332439", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 282, towerName: "N1748", baiduLon: "107.41076280338682", baiduLat: "33.49509720529899", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 283, towerName: "N1749", baiduLon: "107.4175326828727", baiduLat: "33.495178335363036", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 284, towerName: "N1750", baiduLon: "107.42050988504761", baiduLat: "33.49511370873718", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 285, towerName: "N1751", baiduLon: "107.42455074159426", baiduLat: "33.495016233125526", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 286, towerName: "N1752", baiduLon: "107.43179273512058", baiduLat: "33.494820826744615", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 287, towerName: "N1753", baiduLon: "107.43610584249222", baiduLat: "33.49422958063155", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 288, towerName: "N1754", baiduLon: "107.4379616887375", baiduLat: "33.49397443366867", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 289, towerName: "N1755", baiduLon: "107.44135107997957", baiduLat: "33.493508803401774", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 290, towerName: "N1756", baiduLon: "107.44978864589918", baiduLat: "33.4945634721474", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 291, towerName: "N1757", baiduLon: "107.45428852797096", baiduLat: "33.49238466612214", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 292, towerName: "N1758", baiduLon: "107.4578430824247", baiduLat: "33.49067103361664", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 293, towerName: "N1759", baiduLon: "107.46391238275316", baiduLat: "33.487762960678936", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 294, towerName: "N1760", baiduLon: "107.46879495116076", baiduLat: "33.48487973912042", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 295, towerName: "N1761", baiduLon: "107.47170139267237", baiduLat: "33.48317094602991", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 296, towerName: "N1762", baiduLon: "107.47594219910523", baiduLat: "33.48068725015285", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, { id: 297, towerName: "N1801", baiduLon: "107.48230598604319", baiduLat: "33.47759644323532", time1: null, time2: null, time3: null, time4: null, time5: null, time6: null, time7: null, time8: null, time9: null, time10: null, existSpan: 0, towerProgress: 0, }, ]; // 塔列表 let crossingList = []; // 跨越列表 let crossingListNew = []; // 跨越列表 let highwayList = []; // 公路列表 let aThousandFieldsList = []; // 牵张场地 let intLng = 116.254; // 初始经度 let intLat = 39.965; // 初始纬度 let isMap = true; // 是否是地图模式 let projectOverview = ""; // 工程概况 let projectTitle = ""; // 项目名称 let centerTitle = ""; // 中间标题 const mapConfig = { scene: { center: { lat: 31.686288, lng: 117.229619, // alt: 11333.9, // heading: 359.2, // pitch: -39.5, alt: 12000, // 高度≈缩放级别 heading: 30, // 旋转30度 pitch: -45, // 俯视角45度 }, highDynamicRange: false, // 关闭HDR(可减少模糊) scene3DOnly: false, shadows: false, removeDblClick: true, sceneMode: 3, showSun: true, showMoon: true, showSkyBox: true, showSkyAtmosphere: true, fog: true, fxaa: false, requestRenderMode: false, globe: { depthTestAgainstTerrain: false, baseColor: "#546a53", showGroundAtmosphere: true, enableLighting: false, }, cameraController: { zoomFactor: 3.0, minimumZoomDistance: 1, maximumZoomDistance: 50000000, enableRotate: true, enableTranslate: true, enableTilt: true, enableZoom: true, enableCollisionDetection: true, minimumCollisionTerrainHeight: 15000, }, }, control: { homeButton: true, baseLayerPicker: true, sceneModePicker: true, vrButton: false, fullscreenButton: true, navigationHelpButton: true, animation: false, timeline: false, infoBox: false, geocoder: false, selectionIndicator: false, contextmenu: { hasDefault: false }, mouseDownView: true, zoom: { insertIndex: 1 }, compass: { bottom: "toolbar", left: "5px" }, distanceLegend: { left: "10px", bottom: "2px" }, locationBar: { fps: true, crs: "CGCS2000_GK_Zone_3", crsDecimal: 0, template: "
经度:{lng}
纬度:{lat}
横{crsx} 纵{crsy}
海拔:{alt}米
层级:{level}
方向:{heading}°
俯仰角:{pitch}°
视高:{cameraHeight}米
", }, }, templateValues: { dataServer: "//data.mars3d.cn", gltfServerUrl: "//data.mars3d.cn/gltf", }, terrain: { url: "//data.mars3d.cn/terrain", show: true, }, basemaps: [ { id: 10, name: "地图底图", type: "group" }, { id: 2021, pid: 10, name: "天地图影像", icon: "../../img/mars-map-img/tdt_img.png", type: "group", layers: [ { name: "底图", type: "tdt", layer: "img_d" }, { name: "注记", type: "tdt", layer: "img_z" }, ], show: true, }, { pid: 10, name: "天地图电子", icon: "../../img/mars-map-img/tdt_vec.png", type: "group", layers: [ { name: "底图", type: "tdt", layer: "vec_d" }, { name: "注记", type: "tdt", layer: "vec_z" }, ], }, { pid: 10, name: "高德影像", type: "group", icon: "../../img/mars-map-img/gaode_img.png", layers: [ { name: "底图", type: "gaode", layer: "img_d" }, { name: "注记", type: "gaode", layer: "img_z" }, ], }, { pid: 10, name: "高德电子", type: "gaode", icon: "../../img/mars-map-img/gaode_vec.png", layer: "vec", }, { pid: 10, name: "百度影像", type: "group", icon: "../../img/mars-map-img/bd-img.png", layers: [ { name: "底图", type: "baidu", layer: "img_d" }, { name: "注记", type: "baidu", layer: "img_z" }, ], }, { pid: 10, name: "百度电子", icon: "../../img/mars-map-img/bd-vec.png", type: "baidu", layer: "vec", }, { pid: 10, name: "腾讯影像", icon: "../../img/mars-map-img/tencent_img.png", type: "group", layers: [ { name: "底图", type: "tencent", layer: "img_d" }, { name: "注记", type: "tencent", layer: "img_z" }, ], }, { pid: 10, name: "腾讯电子", icon: "../../img/mars-map-img/tencent_vec.png", type: "tencent", layer: "vec", }, { pid: 10, name: "ArcGIS影像", icon: "../../img/mars-map-img/esriWorldImagery.png", type: "xyz", url: "https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}", enablePickFeatures: false, }, ], }; // 图例数据 const legendData = [ { name: "协调完成", value: 0, // icon: "../../img/digitalSignage/icon_three.png", icon: "../../img/digitalSignage/icon_three_new.png", }, { name: "基础开挖", value: 0, // icon: "../../img/digitalSignage/icon_two.png", icon: "../../img/digitalSignage/icon_two_new.png", }, { name: "基础开挖完成", value: 0, // icon: "../../img/digitalSignage/icon_five.png", icon: "../../img/digitalSignage/icon_five_new.png", }, { name: "基础浇筑", value: 0, // icon: "../../img/digitalSignage/icon_seven.png", icon: "../../img/digitalSignage/icon_seven_new.png", }, { name: "基础浇筑完成", value: 0, // icon: "../../img/digitalSignage/icon_four.png", icon: "../../img/digitalSignage/icon_four_new.png", }, { name: "铁塔组立", value: 0, // icon: "../../img/digitalSignage/icon_six.png", icon: "../../img/digitalSignage/zt_orange.png", }, { name: "铁塔组立完成", value: 0, icon: "../../img/digitalSignage/zt_red.png", }, { name: "架线施工", value: 0, icon: "../../img/digitalSignage/line_y.png", }, // { // name: "架线施工完成", // value: 0, // icon: "../../img/digitalSignage/zt_purple.png", // }, { name: "架线施工完成", value: 0, icon: "../../img/digitalSignage/line_r.png", }, { name: "附件安装完成", value: 0, icon: "../../img/digitalSignage/zt_green.png", }, { name: "未 开 始", value: 0, icon: "../../img/digitalSignage/icon_one_new.png", }, { name: "索道运输", value: 0, icon: "../../img/digitalSignage/sd.png", }, // { // name: "项 目 部", // value: 0, // icon: "../../img/digitalSignage/project.png", // }, ]; // 地图配置项 const config = { polyline: { strokeWeight: 3, // 线条宽度 strokeOpacity: 0.9, // 透明度 strokeStyle: "dashed", // solid(实线)或dashed(虚线) enableEditing: false, // 是否可编辑 enableClicking: true, // 是否可点击 }, }; // 获取位置信息 function getLocationInfo(id) { const params = { encryptedData: encryptCBC(JSON.stringify({ id })), }; ajaxRequest( dataUrl + "/backstage/digitalSignage/getTowersInfo", "POST", params, true, function () {}, function (result) { console.log(result, "获取位置信息---"); const { data } = result; crossingList = []; crossingListNew = []; cablewayList = []; // towerList = []; if (data.cablewaTransVos.length > 0) { cablewayList = data.cablewaTransVos; } else { cablewayList = []; } if (data.towerInfoVos.length > 0) { // towerList = data.towerInfoVos; } else { // towerList = []; } if (data.spanInfoVos.length > 0) { crossingList = data.spanInfoVos; } else { crossingList = []; crossingListNew = []; } if (data.highwayList.length > 0) { highwayList = data.highwayList; } else { highwayList = []; } if (data.aThousandFieldsList.length > 0) { aThousandFieldsList = data.aThousandFieldsList; } else { aThousandFieldsList = []; } // 处理一下交叉信息 if (crossingList && crossingList.length > 0) { crossingList.forEach((item) => { if (item.lonAndLat && item.lonAndLat.indexOf(",") > -1) { const lonAndLatList = item.lonAndLat.split(","); lonAndLatList.forEach((lonAndLat, index) => { const lonAndLatItem = lonAndLat.split("@"); crossingListNew.push({ baiduLon: lonAndLatItem[0], baiduLat: lonAndLatItem[1], ...item, }); }); } }); } initMap(); }, function (xhr) { error(xhr); } ); } // 百度地图初始化 function initMap() { if (map) { map.destroy(); map = null; } if (!mars3d.Util.webglreport()) { mars3d.Util.webglerror(); } try { mapConfig.scene.center.lat = intLat || 31.686288; mapConfig.scene.center.lng = intLng || 117.229619; map = new mars3d.Map("map-box", mapConfig); let graphicLayer = new mars3d.layer.GraphicLayer(); map.addLayer(graphicLayer); addAllMapPoints(graphicLayer); addMapLine(graphicLayer); addMapAThousandFields(graphicLayer); } catch (error) { console.log("初始化地图出错", error); haoutil.alert(error?.message, "出错了"); } } function addDemoGraphic3(graphicLayer, item, index, img, type) { const isEven = index % 2 === 0; const verticalOrigin = isEven ? Cesium.VerticalOrigin.BOTTOM : Cesium.VerticalOrigin.TOP; const pixelOffsetY = isEven ? 40 : -40; const billboard = new mars3d.graphic.BillboardEntity({ position: [item.baiduLon, item.baiduLat], style: { image: img, width: 20, height: 20, clampToGround: true, // 添加Label label: { text: item.towerName, font_size: 12, color: "#FFFFFF", background: true, backgroundColor: "#000000", backgroundOpacity: 0.8, pixelOffset: new Cesium.Cartesian2(0, pixelOffsetY), verticalOrigin: verticalOrigin, horizontalOrigin: Cesium.HorizontalOrigin.CENTER, outline: true, outlineColor: "#000000", outlineWidth: 2, }, }, // 其他属性 attr: { id: index, name: item.towerName, }, }); // 添加点击事件 billboard.on(mars3d.EventType.click, function (event) { // console.log("点击了标点", event.graphic.attr); if (type == 1) { // 索道 } else { // 杆塔 } }); graphicLayer.addGraphic(billboard); } function connectPointsWithLine(graphicLayer, points) { // 提取所有点的坐标数组 const positions = points.map((item) => [item.baiduLon, item.baiduLat]); // 创建连线 const polyline = new mars3d.graphic.PolylineEntity({ positions: positions, style: { width: 2, // 线宽(像素) color: "#FF0000", // 线颜色 clampToGround: true, // 是否贴地(山区建议设为true) }, attr: { name: "高压线路" }, }); graphicLayer.addGraphic(polyline); } // 添加标点 function addAllMapPoints(graphicLayer) { const iconTypeList = { // 1: "../../img/digitalSignage/icon_three.png", 1: "../../img/digitalSignage/icon_three_new.png", // 2: "../../img/digitalSignage/icon_two.png", 2: "../../img/digitalSignage/icon_two_new.png", // 3: "../../img/digitalSignage/icon_five.png", 3: "../../img/digitalSignage/icon_five_new.png", // 4: "../../img/digitalSignage/icon_seven.png", // 4: "../../img/digitalSignage/icon_purple.png", 4: "../../img/digitalSignage/icon_seven_new.png", // 5: "../../img/digitalSignage/icon_four.png", 5: "../../img/digitalSignage/icon_four_new.png", // 6: "../../img/digitalSignage/icon_six.png", 6: "../../img/digitalSignage/zt_orange.png", 7: "../../img/digitalSignage/zt_red.png", 8: "../../img/digitalSignage/zt_red.png", // 新增的工序 9: "../../img/digitalSignage/zt_red.png", 10: "../../img/digitalSignage/zt_green.png", // 0: "../../img/digitalSignage/icon_one.png", 0: "../../img/digitalSignage/icon_one_new.png", 12: "../../img/digitalSignage/sd.png", 20: "../../img/digitalSignage/project.png", // 21: "../../img/digitalSignage/zt_white.png", 21: "../../img/digitalSignage/zt_gary.png", }; // 绘制索道标点 if (cablewayList && cablewayList.length > 0) { cablewayList.forEach((pointData, index) => { if ( pointData.cablewaTransPointVoList && pointData.cablewaTransPointVoList.length > 0 ) { const billboard = new mars3d.graphic.BillboardEntity({ position: [ pointData.cablewaTransPointVoList[0].lng, pointData.cablewaTransPointVoList[0].lat, ], style: { image: iconTypeList[12], width: 20, height: 20, clampToGround: true, }, }); // 添加点击事件 billboard.on(mars3d.EventType.click, function (event) { // console.log("点击了标点", event.graphic.attr); const graphic = event.graphic; const infoContent = `

索道运输

索道位置 ${pointData.towerName}
索道长度 ${pointData.cablewayLength} KM
最大载重 ${pointData.maxHeight} kg
安全距离 ${pointData.safetyDistance} m
最大坡度 ${pointData.maxSlope} °
索道宽度 ${pointData.cablewayWidth} m
`; // 创建自定义信息窗体 graphicLayer.bindPopup(infoContent, { position: graphic.position, }); }); graphicLayer.addGraphic(billboard); } }); } // 绘制项目部 if (intLng && intLat) { const billboard = new mars3d.graphic.BillboardEntity({ position: [intLng, intLat], style: { image: iconTypeList[20], width: 20, height: 20, clampToGround: true, }, }); // 添加点击事件 billboard.on(mars3d.EventType.click, function (event) { // console.log("点击了标点", event.graphic.attr); const graphic = event.graphic; const infoContent = `

${projectTitle}

`; // 创建自定义信息窗体 graphicLayer.bindPopup(infoContent, { position: graphic.position, }); }); graphicLayer.addGraphic(billboard); } // 绘制杆塔 if (towerList && towerList.length > 0) { towerList.forEach((pointData, index) => { const isEven = index % 2 === 0; const verticalOrigin = isEven ? Cesium.VerticalOrigin.BOTTOM : Cesium.VerticalOrigin.TOP; const pixelOffsetY = isEven ? 60 : -60; const iconUrl = iconTypeList[parseInt(pointData.towerProgress)]; const billboard = new mars3d.graphic.BillboardEntity({ position: [pointData.baiduLon, pointData.baiduLat], style: { image: iconUrl, width: 30, height: 30, clampToGround: true, // 添加Label label: { text: pointData.towerName, font_size: 12, // 适当增大字号(最小建议12) font_family: "Microsoft YaHei", // 指定清晰字体(如宋体、Arial) color: "#FFFFFF", background: true, backgroundColor: "#000000", backgroundOpacity: 0.7, // 背景透明度(0-1) pixelOffset: new Cesium.Cartesian2(0, pixelOffsetY), verticalOrigin: verticalOrigin, horizontalOrigin: Cesium.HorizontalOrigin.CENTER, outline: true, outlineColor: "#000000", // 轮廓色与背景色一致 outlineWidth: 2, // 加粗轮廓 style: Cesium.LabelStyle.FILL_AND_OUTLINE, // 强制填充+轮廓 scale: 0.8, // 轻微放大(可选) disableDepthTestDistance: Number.POSITIVE_INFINITY, // 避免被地形遮挡 }, }, // 其他属性 attr: { id: index, name: pointData.towerName, }, }); // 添加点击事件 billboard.on(mars3d.EventType.click, function (event) { // console.log("点击了标点", event.graphic.attr); const graphic = event.graphic; let infoContent = `

${pointData.towerName}

协调完成 ${pointData.time1 || "/"}
基础开挖 ${pointData.time2 || "/"}
基础开挖完成 ${pointData.time3 || "/"}
基础浇筑 ${pointData.time4 || "/"}
基础浇筑完成 ${pointData.time5 || "/"}
铁塔组立 ${pointData.time6 || "/"}
铁塔组立完成 ${pointData.time7 || "/"}
架线施工 ${pointData.time8 || "/"}
架线施工完成 ${pointData.time9 || "/"}
附件安装完成 ${pointData.time10 || "/"}
`; // 创建自定义信息窗体 graphicLayer.bindPopup(infoContent, { position: graphic.position, }); }); graphicLayer.addGraphic(billboard); }); } // 绘制交叉跨越 if (crossingListNew.length > 0) { crossingListNew.forEach((pointData, index) => { const billboard = new mars3d.graphic.BillboardEntity({ position: [pointData.baiduLon, pointData.baiduLat], style: { image: iconTypeList[21], width: 20, height: 20, clampToGround: true, }, }); // 添加点击事件 billboard.on(mars3d.EventType.click, function (event) { // console.log("点击了标点", event.graphic.attr); console.log(event, "pointData点击了----"); const graphic = event.graphic; const infoContent = `

${pointData.towerInfoVo.towerName}

协调完成 ${ pointData.towerInfoVo.time1 || "/" }
基础开挖 ${pointData.towerInfoVo.time2 || "/"}
基础开挖完成 ${pointData.towerInfoVo.time3 || "/"}
基础浇筑 ${pointData.towerInfoVo.time4 || "/"}
基础浇筑完成 ${pointData.towerInfoVo.time5 || "/"}
铁塔组立 ${pointData.towerInfoVo.time6 || "/"}
铁塔组立完成 ${pointData.towerInfoVo.time7 || "/"}
架线施工 ${pointData.towerInfoVo.time8 || "/"}
架线施工完成 ${pointData.towerInfoVo.time9 || "/"}
附件安装完成 ${pointData.towerInfoVo.time10 || "/"}

交叉跨越信息 ( ${pointData.spanTowerName} )

上层线路 ${pointData.upperLine}
下层线路 ${pointData.lowerLine}
交叉角度 ${pointData.intersectionAngle} °
垂直距离 ${pointData.verticalDistance} m
安全裕度 ${pointData.safetyMargin} °
`; // 创建自定义信息窗体 graphicLayer.bindPopup(infoContent, { position: graphic.position, }); }); graphicLayer.addGraphic(billboard); }); } } // 连线 function connectPointsWithLine(graphicLayer, points) { // 提取所有点的坐标数组 const positions = points.map((item) => [item.lng, item.lat]); // 创建连线 const polyline = new mars3d.graphic.PolylineEntity({ positions: positions, style: { width: 2, // 线宽(像素) color: "#FF0000", // 线颜色 clampToGround: true, // 是否贴地(山区建议设为true) }, attr: { name: "高压线路" }, }); graphicLayer.addGraphic(polyline); } function clearAllOverlays() { map.clearOverlays(); // 清除可能遗留的自定义覆盖物 const customOverlays = document.querySelectorAll(".BMap_customOverlay"); customOverlays.forEach((overlay) => overlay.remove()); } function calculateBounds(points) { console.log(points, "points999"); var lngs = points.map((p) => p.lng); var lats = points.map((p) => p.lat); var minLng = Math.min(...lngs); var maxLng = Math.max(...lngs); var minLat = Math.min(...lats); var maxLat = Math.max(...lats); return new BMapGL.Bounds( new BMapGL.Point(minLng, minLat), new BMapGL.Point(maxLng, maxLat) ); } // 添加标点折线(智能绘制虚实线) function addMapLine(graphicLayer) { // 存储所有线段 const segments = []; // 绘制杆塔线 if (towerList.length > 0) { for (let i = 0; i < towerList.length - 1; i++) { const startPoint = towerList[i]; const endPoint = towerList[i + 1]; let lineColor = ""; let lineMaterial = null; // 用于存储线材质 // 判断条件部分保持不变 if ( startPoint.towerProgress === 8 && endPoint.towerProgress === 8 ) { lineColor = "#FFFF00"; lineMaterial = new Cesium.ColorMaterialProperty({ // 实线 color: Cesium.Color.fromCssColorString(lineColor), }); } else if ( endPoint.existSpan === 1 && startPoint.existSpan === 1 && startPoint.towerProgress != 9 && endPoint.towerProgress != 9 && startPoint.towerProgress != 8 && endPoint.towerProgress != 8 && startPoint.towerProgress != 10 && endPoint.towerProgress != 10 ) { lineColor = "#d81e06"; lineMaterial = new Cesium.PolylineDashMaterialProperty({ // 虚线 color: Cesium.Color.fromCssColorString(lineColor), dashLength: 16.0, // 可调整虚线长度 }); } else if ( (startPoint.towerProgress === 9 && endPoint.towerProgress === 9) || (startPoint.towerProgress === 10 && endPoint.towerProgress === 10) ) { lineColor = "#d81e06"; lineMaterial = new Cesium.ColorMaterialProperty({ // 实线 color: Cesium.Color.fromCssColorString(lineColor), }); } else { lineColor = "#fff"; lineMaterial = new Cesium.PolylineDashMaterialProperty({ // 虚线 color: Cesium.Color.fromCssColorString(lineColor), dashLength: 16.0, // 可调整虚线长度 }); } // 创建线段点数组 const positions = [ [startPoint.baiduLon, startPoint.baiduLat], [endPoint.baiduLon, endPoint.baiduLat], ]; const polyline = new mars3d.graphic.PolylineEntity({ positions: positions, style: { width: 2, // 线宽(像素) material: lineMaterial, // 使用动态设置的材质 clampToGround: true, // 是否贴地(山区建议设为true) }, }); graphicLayer.addGraphic(polyline); } } // 绘制交叉线路 if (crossingListNew.length > 0) { for (let i = 0; i < crossingListNew.length - 1; i++) { const startPoint = crossingListNew[i]; const endPoint = crossingListNew[i + 1]; // 创建线段点数组 const positions = [ [startPoint.baiduLon, startPoint.baiduLat], [endPoint.baiduLon, endPoint.baiduLat], ]; const polyline = new mars3d.graphic.PolylineEntity({ positions: positions, style: { width: 2, // 线宽(像素) color: "#800080", // 线颜色 clampToGround: true, // 是否贴地(山区建议设为true) }, }); graphicLayer.addGraphic(polyline); } } // 绘制索道线 if (cablewayList.length > 0) { cablewayList.forEach((pointData) => { if ( pointData.cablewaTransPointVoList && pointData.cablewaTransPointVoList.length > 0 ) { for ( let j = 0; j < pointData.cablewaTransPointVoList.length - 1; j++ ) { const startPoint = pointData.cablewaTransPointVoList[j]; const endPoint = pointData.cablewaTransPointVoList[j + 1]; // 创建线段点数组 const positions = [ [startPoint.lng, startPoint.lat], [endPoint.lng, endPoint.lat], ]; const polyline = new mars3d.graphic.PolylineEntity({ positions: positions, style: { width: 2, // 线宽(像素) color: "#262fc9", // 线颜色 clampToGround: true, // 是否贴地(山区建议设为true) }, }); graphicLayer.addGraphic(polyline); } } }); } // 绘制公路线 if (highwayList.length > 0) { for (let i = 0; i < highwayList.length; i++) { if (highwayList[i].cablewaTransPointVoList.length > 0) { for ( let j = 0; j < highwayList[i].cablewaTransPointVoList.length - 1; j++ ) { const startPoint = highwayList[i].cablewaTransPointVoList[j]; const endPoint = highwayList[i].cablewaTransPointVoList[j + 1]; // 创建线段点数组 const positions = [ [startPoint.lng, startPoint.lat], [endPoint.lng, endPoint.lat], ]; const polyline = new mars3d.graphic.PolylineEntity({ positions: positions, style: { width: 2, // 线宽(像素) color: "#FFFF00", // 线颜色 clampToGround: true, // 是否贴地(山区建议设为true) }, }); graphicLayer.addGraphic(polyline); } } } } // 将所有线段添加到地图 segments.forEach((segment) => map.addOverlay(segment)); } // 根据点类型获取线段颜色 function getSegmentColor(startPoint, endPoint) { // 如果两点类型相同,使用该类型对应颜色 if (startPoint.type === endPoint.type) { switch (startPoint.type) { case 1: return "#3388ff"; // 类型1蓝色 case 2: return "#ff9900"; // 类型2橙色 case 3: return "#33cc33"; // 类型3绿色 default: return config.polyline.strokeColor; } } // 类型不同使用默认颜色 return config.polyline.strokeColor; } // 绘制牵张场地区域图 function addMapAThousandFields(graphicLayer) { if (aThousandFieldsList.length > 0) { aThousandFieldsList.forEach((item) => { if ( item.cablewaTransPointVoList && item.cablewaTransPointVoList.length > 0 ) { let points = []; // 根据sort字段排序 防止点位顺序不一致 item.cablewaTransPointVoList.forEach((j) => { points.push([j.lng, j.lat]); }); if (points.length > 0) { // // 2. 创建折线连接这些点位 // var polyline = new BMapGL.Polyline(points, { // strokeColor: "#0C14CA", // 线颜色 // strokeWeight: 4, // 线宽 // strokeOpacity: 0.8, // 线透明度 // }); // map.addOverlay(polyline); // // 绘制区域 // var polygon = new BMapGL.Polygon(points, { // strokeColor: "#00FFFF", // 线颜色 // strokeWeight: 4, // 线宽 // strokeOpacity: 0.8, // 线透明度 // fillColor: "#00FFFF", // 填充颜色 // fillOpacity: 0.3, // 填充透明度 // }); // // polygonView = polygon; // map.addOverlay(polygon); const graphic = new mars3d.graphic.PolygonEntity({ positions: points, style: { color: "#00FFFF", // 区域填充颜色 opacity: 0.5, // 透明度(0-1) outline: true, // 是否显示边框 outlineWidth: 2, // 边框宽度(像素) outlineColor: "#00FFFF", // 边框颜色 }, attr: { remark: "示例区域" }, }); graphicLayer.addGraphic(graphic); } } }); } } // 获取组织树数据 function getOrgTreeData() { ajaxRequest( dataUrl + "/backstage/digitalSignage/getProTree", "POST", {}, true, function () {}, function (result) { console.log(result, "组织机构树数据获取成功---"); const { data } = result; // 判断是否有工程 有的话取第一个 if (data && data.length > 0) { setSpreadToNodes(data); treeData = data; // 获取第一个工程 if ( data[0].children && data[0].children.length > 0 && data[0].children[0].children && data[0].children[0].children.length > 0 ) { nodeId = data[0].children[0].children[0].id; if ( data[0].children[0].children[0].lon && data[0].children[0].children[0].lat ) { intLng = data[0].children[0].children[0].lon; intLat = data[0].children[0].children[0].lat; projectTitle = data[0].children[0].children[0].title; } if (treeData[0].children[0].children[0].title) { projectTitle = treeData[0].children[0].children[0].title; $(".center-title-box").text(projectTitle + "作战图"); } // getScrollData(nodeId); $(".project-overview-content").text( treeData[0].children[0].children[0].projectOverview || "暂无" ); getLegendData(nodeId); getLocationInfo(nodeId); } else { initMap(); } } }, function (xhr) { error(xhr); } ); } getOrgTreeData(); // 递归 function setSpreadToNodes(nodes, spreadValue = true) { if (!nodes || !Array.isArray(nodes)) return; nodes.forEach((node) => { node.spread = spreadValue; if (node.children && node.children.length > 0) { setSpreadToNodes(node.children, spreadValue); } }); } // 获取左上角滚动数据源 function getScrollData(id) { const scrollData = [ { name: "跨线路", location: "N11-N12999", content: [ { name: "垂直净度", value: "9896", }, { name: "垂直净度", value: "9896", }, { name: "垂直净度", value: "9896", }, ], }, { name: "跨越地点", location: "N11-N12336", content: [ { name: "垂直净度", value: "9896", }, { name: "垂直净度", value: "9896", }, { name: "垂直净度", value: "9896", }, ], }, { name: "跨越地点", location: "N11-N128885", content: [ { name: "垂直净度", value: "9896", }, { name: "垂直净度", value: "9896", }, { name: "垂直净度", value: "9896", }, ], }, { name: "跨越地点", location: "N11-N128773", content: [ { name: "垂直净度", value: "9896", }, { name: "垂直净度", value: "9896", }, { name: "垂直净度", value: "9896", }, ], }, ]; const params = { encryptedData: encryptCBC(JSON.stringify({ id })), }; ajaxRequest( dataUrl + "/backstage/digitalSignage/getThreeSpans", "POST", params, true, function () {}, function (result) { // console.log(result, "左上角滚动数据获取成功---"); const { data } = result; let scrollBox = $(".content-wrapper"); let innerHtml = ""; if (data && data.length > 0) { data.forEach((item) => { let describeHtml = ""; if (item.spanType === "跨线路") { describeHtml += ` 上层线路:${item.upperLine || "/"} 下层线路: ${item.lowerLine || "/"} 交叉角度: ${item.intersectionAngle || "/"} 垂直距离: ${item.verticalDistance || "/"} 安全裕度: ${item.safetyMargin || "/"} `; } else if (item.spanType === "跨公路") { describeHtml += ` 垂直净距:${item.verticalClearDistance || "/"} m 杆塔间距: ${item.towerSpacing || "/"} m 公路宽度: ${item.highwayWidth || "/"} m `; } else if (item.spanType === "跨铁路") { describeHtml += ` 垂直净距:${item.verticalClearDistance || "/"} m 杆塔间距: ${item.towerSpacing || "/"} m 交叉角度: ${item.intersectionAngle || "/"} ° `; } else { } // 单行数据 innerHtml += `
${item.spanType} ${item.towerName} - ${item.nextTowerName} ${describeHtml}
`; }); $(".scroll-box").show(); scrollBox.html(innerHtml); } else { $(".scroll-box").hide(); } }, function (xhr) { error(xhr); } ); } // 获取左下角图例数据源 function getLegendData(id) { const params = { encryptedData: encryptCBC(JSON.stringify({ id })), }; ajaxRequest( dataUrl + "/backstage/digitalSignage/getTowerProgressNum", "POST", params, true, function () {}, function (result) { const { data } = result; if (data) { Object.values(data).forEach((value, index) => { legendData[index].value = value; }); } const legendBox = $(".legend-box"); let innerHtml = ""; legendData.forEach((item, index) => { innerHtml += `
${item.name} ${item.value}
`; }); legendBox.html(innerHtml); }, function (xhr) { error(xhr); } ); } document.addEventListener("DOMContentLoaded", function () { const scrollContent = document.getElementById("scrollContent"); const originalContent = scrollContent.querySelector(".content-wrapper"); const cloneContent = scrollContent.querySelector(".clone-content"); // 克隆原始内容到克隆容器 cloneContent.innerHTML = originalContent.innerHTML; // 设置滚动动画 let scrollPosition = 0; const scrollSpeed = 20; // 滚动速度(像素/秒) let lastTimestamp = 0; function animateScroll(timestamp) { if (!lastTimestamp) lastTimestamp = timestamp; const deltaTime = timestamp - lastTimestamp; lastTimestamp = timestamp; // 计算新的滚动位置 scrollPosition += (scrollSpeed * deltaTime) / 1000; // 获取内容总高度 const contentHeight = originalContent.scrollHeight; // 当滚动到克隆内容的开始时,重置位置以实现无缝衔接 if (scrollPosition >= contentHeight) { scrollPosition = 0; } // 应用滚动 scrollContent.scrollTop = scrollPosition; // 继续动画 requestAnimationFrame(animateScroll); } // 启动动画 requestAnimationFrame(animateScroll); // // 鼠标悬停时暂停滚动 // scrollContent.addEventListener("mouseenter", function () { // scrollSpeed = 0; // }); // scrollContent.addEventListener("mouseleave", function () { // scrollSpeed = 30; // 恢复原始速度 // }); const drawer = document.querySelector(".right-drawer-box"); const openBtn = document.querySelector(".open-drawer-box"); const closeBtn = document.querySelector(".close-drawer-btn"); // 点击三角按钮打开抽屉 openBtn.addEventListener("click", function () { drawer.classList.add("open"); layui.use(["tree", "jquery"], function () { var tree = layui.tree; var $ = layui.jquery; // 初始化组织树 function initOrgTree() { // 渲染树形结构 tree.render({ elem: "#orgTree", // 绑定元素 id: "orgTree", // 自定义索引 data: treeData, // 获取数据 showCheckbox: false, // 是否显示复选框 isJump: false, // 是否允许点击节点时弹出新窗口 accordion: true, // 是否开启手风琴模式 edit: false, // 是否开启节点的操作图标 onlyIconControl: true, // 是否仅允许节点左侧图标控制展开收缩 click: function (obj) { console.log(obj.data); // 判断是否是叶子节点(没有子节点或子节点数组为空) if ( !obj.data.children || obj.data.children.length === 0 ) { setActiveNode(obj.elem); nodeId = obj.data.id; intLng = obj.data.lon; intLat = obj.data.lat; projectTitle = obj.data.title; $(".center-title-box").text( projectTitle + "作战图" ); $(".project-overview-content").text( obj.data.projectOverview || "暂无" ); // getScrollData(nodeId); getLegendData(nodeId); getLocationInfo(nodeId); } else { } }, done: function () { console.log("树准备完毕"); expandToNodeId(nodeId); }, }); } initOrgTree(); setActiveNodeNew(nodeId); function setActiveNode(elem) { $("#orgTree") .find(".layui-tree-click") .removeClass("layui-tree-click"); $(elem).addClass("layui-tree-click"); } function setActiveNodeNew(nodeId) { $("#orgTree") .find('[data-id="' + nodeId + '"]') .addClass("layui-tree-click"); } }); }); // 点击关闭按钮关闭抽屉 closeBtn.addEventListener("click", function () { drawer.classList.remove("open"); }); // 点击抽屉外部关闭抽屉(可选) document.addEventListener("click", function (e) { if ( drawer.classList.contains("open") && !drawer.contains(e.target) && e.target !== openBtn ) { drawer.classList.remove("open"); } }); const switchBtnItemMap = document.querySelector(".map-btn"); const switchBtnItemMix = document.querySelector(".mix-btn"); if (isMap) { switchBtnItemMap.classList.add("active"); } switchBtnItemMap.addEventListener("click", function () { getLocationInfo(nodeId); switchBtnItemMap.classList.add("active"); switchBtnItemMix.classList.remove("active"); isMap = true; }); switchBtnItemMix.addEventListener("click", function () { getLocationInfo(nodeId); switchBtnItemMix.classList.add("active"); switchBtnItemMap.classList.remove("active"); isMap = false; }); // 点击全屏图标时 使地图盒子全屏 const fullScreenBtn = document.querySelector(".full-screen-btn"); fullScreenBtn.addEventListener("click", function () { if (document.fullscreenElement) { // 退出全屏 document.exitFullscreen(); } else { // 进入全屏 document.documentElement.requestFullscreen(); // 遍历树形结构数据把数据全部更改为第一个工程 if ( treeData[0].children && treeData[0].children.length > 0 && treeData[0].children[0].children && treeData[0].children[0].children.length > 0 ) { nodeId = treeData[0].children[0].children[0].id; if ( treeData[0].children[0].children[0].lon && treeData[0].children[0].children[0].lat ) { intLng = treeData[0].children[0].children[0].lon; intLat = treeData[0].children[0].children[0].lat; } if (treeData[0].children[0].children[0].title) { projectTitle = treeData[0].children[0].children[0].title; $(".center-title-box").text(projectTitle + "作战图"); } // getScrollData(nodeId); $(".project-overview-content").text( treeData[0].children[0].children[0].projectOverview || "暂无" ); getLegendData(nodeId); getLocationInfo(nodeId); } else { initMap(); } } }); // 设置当鼠标移入工程概况时,并且判断当前是否溢出,溢出时预览框显示 const projectOverviewBox = document.querySelector(".project-overview-box"); const projectOverviewContent = document.querySelector( ".project-overview-content" ); const projectOverviewPreviewBox = document.querySelector( ".project-overview-preview-box" ); projectOverviewBox.addEventListener("mouseenter", function () { if ( projectOverviewContent.scrollHeight > projectOverviewContent.clientHeight ) { projectOverviewPreviewBox.style.display = "block"; projectOverviewPreviewBox.innerHTML = projectOverviewContent.innerHTML; } else { projectOverviewPreviewBox.style.display = "none"; projectOverviewPreviewBox.innerHTML = ""; } }); projectOverviewBox.addEventListener("mouseleave", function () { projectOverviewPreviewBox.style.display = "none"; projectOverviewPreviewBox.innerHTML = ""; }); });