离我最近修电话手表的地方 (离我最近修电动车的地方)

长沙耍耍 04-09 阅读:55 评论:0
离我最近修电话手表的地方 (离我最近修电动车的地方)

电话手表维修

电动车维修

javascript // script.js// 获取用户当前位置 navigator.geolocation.getCurrentPosition(function(position) {const lat = position.coords.latitude;const lng = position.coords.longitude;// 创建地图const map = new google.maps.Map(document.getElementById('map'), {center: { lat, lng },zoom: 15});// 创建标记const marker = new google.maps.Marker({position: { lat, lng },map: map});// 获取维修点数据fetch('repair-shops.json').then(response => response.json()).then(data => {// 过滤出离用户最近的维修点const watchResults = data.watch.sort((a, b) => {const distA = distance(lat, lng, a.lat, a.lng);const distB = distance(lat, lng, b.lat, b.lng);return distA - distB;});const bikeResults = data.bike.sort((a, b) => {const distA = distance(lat, lng, a.lat, a.lng);const distB = distance(lat, lng, b.lat, b.lng);returndistA - distB;});// 在结果列表中显示维修点const watchList = document.getElementById('watch-results');watchResults.forEach(shop => {const li = document.createElement('li');const name = document.createElement('span');const distance = document.createElement('span');name.innerHTML = shop.name;distance.innerHTML = `${(distance(lat, lng, shop.lat, shop.lng) / 1000).toFixed(2)} 公里`;li.appendChild(name);li.appendChild(distance);watchList.appendChild(li);});const bikeList = document.getElementById('bike-results');bikeResults.forEach(shop => {const li = document.createElement('li');const name = document.createElement('span');const distance = document.createElement('span');name.innerHTML = shop.name;distance.innerHTML = `${(distance(lat, lng, shop.lat, shop.lng) / 1000).toFixed(2)} 公里`;li.appendChild(name);li.appendChild(distance);bikeList.appendChild(li);});}); });// 计算两个坐标之间的距离(单位:米) function distance(lat1, lng1, lat2, lng2) {const R = 6371; // 地球半径(单位:千米)const dLat = (lat2 - lat1) Math.PI / 180;const dLon = (lng2 - lng1) Math.PI / 180;const a = Math.sin(dLat / 2) Math.sin(dLat / 2) +Math.cos(lat1 Math.PI / 180) Math.cos(lat2 Math.PI / 180) Math.sin(dLon / 2) Math.sin(dLon / 2);const c = 2 Math.atan2(Math.sqrt(a), Math.sqrt(1-a));return R c 1000; }
版权声明

本文仅代表作者观点,不代表长沙桑拿立场。
本文系作者授权发表,未经许可,不得转载。