欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

html+js,配合百度地图和和风天气实现动态天气预报页面

最编程 2024-03-26 18:48:05
...
var h1 = document.querySelector("h1"); var mybox = document.querySelector("#mybox"); var mycons = document.querySelector("#mycons"); getLocation(); function getLocation() { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition( function success(position) { // console.log("经度:" + position.coords.latitude); // console.log("纬度:" + position.coords.longitude); if (position.coords.latitude == undefined) { setTimeout(() => { getLocation(); }, 500); } else { getLocation2(position.coords.latitude, position.coords.longitude); } }, function fail(error) { switch (error.code) { case error.PERMISSION_DENIED: console.log("用户拒绝对获取地理位置的请求。"); break; case error.POSITION_UNAVAILABLE: console.log("位置信息是不可用的。"); break; case error.TIMEOUT: console.log("请求用户地理位置超时。"); break; case error.UNKNOWN_ERROR: console.log("未知错误。"); break; } }, { enableHighAcuracy: false } ); } else { console.log("Geolocation is not supported by this browser."); } } // 运行 getLocation2() 函数 function getLocation2(aaa, bbb) { // 百度地图的初始化 var geolocation = new BMap.Geolocation(); geolocation.getCurrentPosition(function (e) { if (this.getStatus() == BMAP_STATUS_SUCCESS) { h1.style.display = "none"; // 百度 geolocation 的经纬度属性不同,此处是 point.lat 而不是 coords.latitude var city = e.address.city.substr(0, e.address.city.length - 1); // var city_PY = pinyin.getFullChars(city).toString().toLowerCase(); // console.log(aaa, bbb); var a = aaa.toFixed(2); var b = bbb.toFixed(2); var url = `https://devapi.qweather.com/v7/weather/now?location=${b},${a}&key=cde03782fab84225bf2a93be5a2cfe7b`; var url2 = `https://geoapi.qweather.com/v2/city/lookup?location=${b},${a}&key=cde03782fab84225bf2a93be5a2cfe7b`; var location; fetch(url2, { method: "get", mode: "cors", }) .then(function (data) { return data.json(); }) .then(function (data) { location = `${data.location[0].adm1}-${data.location[0].adm2}-${data.location[0].name}`; fetch(url, { method: "get", mode: "cors", }) .then(function (data) { return data.json(); }) .then(function (data) { mybox.innerHTML = ` <canvas id=icon1 width="100" height="100"></canvas> <p class="area" id="myarea">${location}</p> <p> <span>${data.now.text}</span> <span>${data.now.temp}℃(实时)</span> </p> `; changeWeather(data.now.icon, "icon1"); }); }); var url3 = `https://devapi.qweather.com/v7/weather/7d?location=${b},${a}&key=cde03782fab84225bf2a93be5a2cfe7b`; fetch(url3, { method: "get", mode: "cors", }) .then(function (data) { return data.json(); }) .then(function (data) { // console.log(data); mycons.innerHTML = ` <div class="line"> <div class="icon"> <p class="day">${data.daily[1].fxDate}</p> <canvas id="icon2" width="60" height="60"></canvas> <p>${data.daily[1].tempMin}/${data.daily[0].tempMax}℃</p> </div> <div class="icon"> <p class="day">${data.daily[2].fxDate}</p> <canvas id="icon3" width="60" height="60"></canvas> <p>${data.daily[2].tempMin}/${data.daily[0].tempMax}℃</p> </div> <div class="icon"> <p class="day">${data.daily[3].fxDate}</p> <canvas id="icon4" width="60" height="60"></canvas> <p>${data.daily[3].tempMin}/${data.daily[0].tempMax}℃</p> </div> </div> <div class="line"> <div class="icon"> <p class="day">${data.daily[4].fxDate}</p> <canvas id="icon5" width="60" height="60"></canvas> <p>${data.daily[4].tempMin}/${data.daily[0].tempMax}℃</p> </div> <div class="icon"> <p class="day">${data.daily[5].fxDate}</p> <canvas id="icon6" width="60" height="60"></canvas> <p>${data.daily[5].tempMin}/${data.daily[0].tempMax}℃</p> </div> <div class="icon"> <p class="day">${data.daily[6].fxDate}</p> <canvas id="icon7" width="60" height="60"></canvas> <p>${data.daily[6].tempMin}/${data.daily[0].tempMax}℃</p> </div> </div> `; changeWeather(data.daily[1].iconDay, "icon2"); changeWeather(data.daily[2].iconDay, "icon3"); changeWeather(data.daily[3].iconDay, "icon4"); changeWeather(data.daily[4].iconDay, "icon5"); changeWeather(data.daily[5].iconDay, "icon6"); changeWeather(data.daily[6].iconDay, "icon7"); }); function changeWeather(code, box) { let skycons = new Skycons({ color: "white", }); if (code == 100) { skycons.add(box, Skycons.CLEAR_DAY); skycons.play(); } else if (code >= 101 && code <= 104) { skycons.add(box, Skycons.CLOUDY); skycons.play(); } else if (code >= 300 && code <= 399) { skycons.add(box, Skycons.RAIN); skycons.play(); } else if (code >= 404 && code <= 406) { skycons.add(box, Skycons.SLEET); skycons.play(); } else if ( (code >= 400 && code <= 403) || (code >= 407 && code <= 499) ) { skycons.add(box, Skycons.SNOW); skycons.play(); } else if (code >= 200 && code <= 213) { skycons.add(box, Skycons.WIND); skycons.play(); } else if (code >= 500) { skycons.add(box, Skycons.FOG); skycons.play(); } } } else { alert("无法定位,请刷新页面"); } }); }