原生JavaScript使用百度地图API获取当前城市气温的实例

首先,我们需要使用百度地图的API来获取用户的位置信息。在代码中,我们创建了一个BMap.Geolocation对象,并调用getCurrentPosition方法来获取用户的经纬度信息。这样我们就可以得到用户所在地区的具体位置。

接下来,我们使用逆地理编码API来获取当前城市的详细地址信息。通过将用户的经纬度信息传递给BMap.Geocoder对象的getLocation方法,我们可以获取当前城市的详细地址信息。这样,我们就能够确定用户所在的城市。

然后,我们利用fetch方法发送POST请求到中国气象局的接口,请求当前城市的气温信息。我们传递用户的经纬度信息和一些其他参数,以获取当前城市的实时气温数据。获取到返回的数据后,我们将气温信息渲染到页面上,让用户可以直观地了解当前城市的气温情况。

复制代码
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="renderer" content="webkit">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
    <link rel="icon" href="">
    <title></title>
  </head>
  <body>
   <p id="temperature"></p>
    <script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak=YlKTupxQdbmBT3dGUNVhdSFrDw89CGWc"></script>
    <script>
     var geolocation = new BMap.Geolocation();
     geolocation.getCurrentPosition(function(res){
		 console.log(res);
         var lat = res.latitude; // 纬度
         var lng = res.longitude; // 经度
     
         // 使用百度地图的逆地理编码API获取当前城市
         var myGeo = new BMap.Geocoder();
         myGeo.getLocation(new BMap.Point(lng, lat), function(result){
           // 在这里可以获取到当前城市的详细地址信息
           console.log(result.addressComponents.city);
     
           // 发送请求获取当前城市的气温
           fetch('http://data.cma.cn/kbweb/home/live', {
             method: 'POST',
             headers: {
               'content-type': 'application/json'
             },
             body: JSON.stringify({
               "lat": lat,
               "lon": lng,
               "type": "0"
             }),
           })
           .then(response => response.json())
           .then(data0 => {
             console.log(data0);
             var ds = data0.result.DS[0];
             var tem = ds.TEM;
     
             if (tem == '9999') {
               tem = '--';
             }
     
             // 将气温渲染到页面上
             document.getElementById('temperature').textContent = tem + '°C';
           })
           .catch(err => console.log('Request Failed', err));
         });
     });
    </script>
  </body>
</html>
相关推荐
C澒18 分钟前
微前端容器标准化 —— 公共能力篇:通用打印
前端·架构
德育处主任Pro26 分钟前
前端元素转图片,dom-to-image-more入门教程
前端·javascript·vue.js
木斯佳28 分钟前
前端八股文面经大全:小红书前端一二面OC(下)·(2026-03-17)·面经深度解析
前端·vue3·proxy·八股·响应式
陈天伟教授1 小时前
人工智能应用- 预测新冠病毒传染性:04. 中国:强力措施遏制疫情
前端·人工智能·安全·xss·csrf
叫我一声阿雷吧1 小时前
JS 入门通关手册(23):JS 异步编程:回调函数与异步本质
javascript·es6·前端面试·回调函数·回调地狱·js异步编程·异步本质
zayzy1 小时前
前端八股总结
开发语言·前端·javascript
今天减肥吗1 小时前
前端面试题
开发语言·前端·javascript
Rabbit_QL2 小时前
【前端UI行话】前端 UI 术语速查表
前端·ui·状态模式
小码哥_常2 小时前
一文带你吃透Android BLE蓝牙开发全流程
前端
小码哥_常2 小时前
从“新老交锋”看Retrofit与Ktor
前端