web端项目根据城市获取城市天气信息

本文记录了一位开发者在web页面中整合高德地图和公共天气接口,实现实时显示当前城市天气的过程。在获取天气信息时,选择了免注册的http://wthrcdn.etouch.cn/weather_mini接口;而在获取城市信息时,因百度地图接口返回问题,转而使用高德地图API,通过JavaScript异步加载并定位用户城市。文章详述了遇到的困难及解决办法,适合前端开发者参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、项目需求

          在web页面,根据当前城市显示当天天气情况,比如:深圳市,多云。

二、需求分析

          本来以为这个需求很简单的(其实应该也是很简单,只不过自己对天气和地图这部分不熟悉而已),参考了网上的一些资源,发现踩了一些坑,在这记录一下。

           这个需求有2点,需要2个接口就可以了:

(1)获取天气的接口:

       网上有很多接口,比如和风天气接口,这个接口要自己注册私钥,比较麻烦。由于项目对天气要求不高,我选择了比较简单的公用接口:http://wthrcdn.etouch.cn/weather_mini?city=深圳

(2)获取城市的接口:

        在网上百度了下,很多人推荐某度地图,我也接入用了下,踩了很多坑之后,终于接入成功,结果获取的城市一直是“全国”, 真让人无语。最终只能作罢,换高德地图。

三、接口接入

   1.获取天气接口

      这个就不多说了,取到数据,直接解析就可以了,当然网上反馈获取信息乱码,我用的axios获取的(推荐用这个,返回的数据是json格式,我也用过jQuery获取,数据不是json格式),获取到的数据没出现乱码,大家如果遇到,可以自行百度一下。

获取的数据格式:

2.获取城市接口

   我这使用的高德地图接口,这里简单介绍一下:

(1)注册账号(如果没有的话):高德地图官网

(2)创建key:  控制台 -- 应用管理 --- 创建新应用 -- 添加key

(3) 调用

    由于我这个一进入页面就要获取,官网的api提供了js的异步获方法,获取AMap

官网api截图如下:

通过ip地址去定位

结合这2个api,实习方法:

    获取AMap类:

//接口回调函数
window.onLoad  = function(){
    AMap.plugin('AMap.CitySearch', function() {
          var citySearch = new AMap.CitySearch()
          citySearch.getLocalCity(function(status, result) {
            if (status === 'complete' && result.info === 'OK') {
              // 查询成功

              //获取当前城市天气信息
              let url = 'http://wthrcdn.etouch.cn/weather_mini?city=' + result.city
              axios.get(url).then((res) => {
                 ......
              })
            }
          })
     })
}

//通过javaScript获取AMap对象
var url = 'https://webapi.amap.com/maps?v=1.4.15&key=您申请的key值&callback=onLoad';
var jsapi = document.createElement('script');
jsapi.charset = 'utf-8';
jsapi.src = url;
document.head.appendChild(jsapi);

      这篇文章主要用于记录自己踩的一些坑,同时也希望能帮助到一些跟我一样需要的人,都是个人经验总结,大神轻喷,欢迎探讨。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值