高德地图web服务API接口开发:获取IP定位显示当前位置的天气预报解决方案

简介: 高德地图web服务API接口开发:获取IP定位显示当前位置的天气预报解决方案

获取当前的IP定位

    //获取当前的IP定位;
    var key = "4d9a765939a2b76588a3341c2***"
    var url = "https://restapi.amap.com/v3/ip?key=" + key;
    $.getJSON(url, function (res) {
        //console.log(res);
        var adcode = res.adcode;
        $("#ip").html("当前位置:" + res.province + res.city);
        //显示天气情况;
        getWeather(adcode, key)
    })


获取天气情况函数

    //天气函数;
    function getWeather(adcode, key) {
        /*天气查询API*/
        var url = 'https://restapi.amap.com/v3/weather/weatherInfo?city=' + adcode + '&key=' + key + '&extensions=all';
        $.getJSON(url, function (res) {
            //console.log(res);
            //当前星期;
            $(".date-dayname").html(getWeek(res.forecasts[0].casts[0].week));
            //当前时间;
            $(".date-day").html(res.forecasts[0].reporttime.slice(0, 10));
            //所在地区;
            $(".location").html(res.forecasts[0].city);
            //当天温度;
            $(".weather-temp").html(res.forecasts[0].casts[0].daytemp + "°C");
            //当天天气现象;
            $(".weather-desc").html(res.forecasts[0].casts[0].dayweather);
            //当天风力;
            $("#daypower").html(res.forecasts[0].casts[0].daypower);
            //当天风向;
            $("#daywind").html(res.forecasts[0].casts[0].daywind);
            //当天天气现象;
            $("#dayweather").html(res.forecasts[0].casts[0].dayweather);
            //四日预报,星期
            $("#week0").html(getWeek(res.forecasts[0].casts[0].week));
            $("#week1").html(getWeek(res.forecasts[0].casts[1].week));
            $("#week2").html(getWeek(res.forecasts[0].casts[2].week));
            $("#week3").html(getWeek(res.forecasts[0].casts[3].week));
            //四日预报,温度
            $("#temp0").html(res.forecasts[0].casts[0].daytemp + "°C");
            $("#temp1").html(res.forecasts[0].casts[1].daytemp + "°C");
            $("#temp2").html(res.forecasts[0].casts[2].daytemp + "°C");
            $("#temp3").html(res.forecasts[0].casts[3].daytemp + "°C");
            //天气图标;
            $("#icon").html(getIcon(0, "day", res.forecasts[0].casts[0].dayweather));
            $("#icon0").html(getIcon(1, "day", res.forecasts[0].casts[0].dayweather));
            $("#icon1").html(getIcon(1, "day", res.forecasts[0].casts[1].dayweather));
            $("#icon2").html(getIcon(1, "day", res.forecasts[0].casts[2].dayweather));
            $("#icon3").html(getIcon(1, "day", res.forecasts[0].casts[3].dayweather));
        })
    }


判断星期

    //判断星期;
    function getWeek(week) {
        switch (week) {
            case "1":
                return "星期一"
                break;
            case "2":
                return "星期二"
                break;
            case "3":
                return "星期三"
                break;
            case "4":
                return "星期四"
                break;
            case "5":
                return "星期五"
                break;
            case "6":
                return "星期六"
                break;
            case "7":
                return "星期日"
                break;
            default:
                return "异常"
        }
    }


判断天气情况返回对应图图标

    //按天气情况返回对应图图标;
    /* local图标位置,0->60px;1->30px;
     * times,day->白天;night->晚上;
     * desc天气描述;
     */
    function getIcon(local, times, desc) {
        var iconWidth, url;
        //图标尺寸判断;
        if (local == 0) {
            iconWidth = "80px";
        } else {
            iconWidth = "30px";
        }
        //图标类型判断;
        if (times == "day") {
            url = "img/day/"
        } else {
            url = "img/night/"
        }
        //天气描述图标;
        switch (desc) {
            case "晴":
                return '<img src="' + url + '00.png" width=' + iconWidth + '>'
                break;
            case "多云":
                return '<img src="' + url + '01.png" width=' + iconWidth + '>'
                break;
            case "阴":
                return '<img src="' + url + '02.png" width=' + iconWidth + '>'
                break;
            case "阵雨":
                return '<img src="' + url + '03.png" width=' + iconWidth + '>'
                break;
            case "雷阵雨":
                return '<img src="' + url + '04.png" width=' + iconWidth + '>'
                break;
            case "雷阵雨并伴有冰雹":
                return '<img src="' + url + '05.png" width=' + iconWidth + '>'
                break;
            case "雨夹雪":
                return '<img src="' + url + '06.png" width=' + iconWidth + '>'
                break;
            case "小雨":
                return '<img src="' + url + '07.png" width=' + iconWidth + '>'
                break;
            case "中雨":
                return '<img src="' + url + '08.png" width=' + iconWidth + '>'
                break;
            case "大雨":
                return '<img src="' + url + '09.png" width=' + iconWidth + '>'
                break;
            case "暴雨":
                return '<img src="' + url + '10.png" width=' + iconWidth + '>'
                break;
            case "大暴雨":
                return '<img src="' + url + '11.png" width=' + iconWidth + '>'
                break;
            case "特大暴雨":
                return '<img src="' + url + '12.png" width=' + iconWidth + '>'
                break;
            case "阵雪":
                return '<img src="' + url + '13.png" width=' + iconWidth + '>'
                break;
            case "小雪":
                return '<img src="' + url + '14.png" width=' + iconWidth + '>'
                break;
            case "中雪":
                return '<img src="' + url + '15.png" width=' + iconWidth + '>'
                break;
            case "大雪":
                return '<img src="' + url + '16.png" width=' + iconWidth + '>'
                break;
            case "暴雪":
                return '<img src="' + url + '17.png" width=' + iconWidth + '>'
                break;
            case "雾":
                return '<img src="' + url + '18.png" width=' + iconWidth + '>'
                break;
            case "冻雨":
                return '<img src="' + url + '19.png" width=' + iconWidth + '>'
                break;
            case "沙尘暴":
                return '<img src="' + url + '20.png" width=' + iconWidth + '>'
                break;
            case "霾":
                return '<img src="' + url + '53.png" width=' + iconWidth + '>'
                break;
            case "雨":
                return '<img src="' + url + '301.png" width=' + iconWidth + '>'
                break;
            case "雪":
                return '<img src="' + url + '302.png" width=' + iconWidth + '>'
                break;
            default:
                return "异常"
        }
    }


html代码

<div class="container">
    <div class="weather-side">
        <div class="weather-gradient"></div>
        <div class="date-container">
            <h2 class="date-dayname"></h2><span class="date-day"></span>
            <i class="location-icon"></i><span class="location"></span>
        </div>
        <div class="weather-container"><i class="weather-icon" id="icon"></i>
            <h1 class="weather-temp"></h1>
            <h3 class="weather-desc"></h3>
        </div>
    </div>
    <div class="info-side">
        <div class="today-info-container">
            <div class="today-info">
                <div class="precipitation"><span class="title">风力</span><span class="value" id="daypower"></span>
                    <div class="clear"></div>
                </div>
                <div class="humidity"><span class="title">风向</span><span class="value" id="daywind"></span>
                    <div class="clear"></div>
                </div>
                <div class="wind"><span class="title">天气现象</span><span class="value" id="dayweather"></span>
                    <div class="clear"></div>
                </div>
            </div>
        </div>
        <div class="week-container">
            <ul class="week-list">
                <li><i class="day-icon" id="icon0"></i><span class="day-name" id="week0"></span><span class="day-temp"
                                                                                                      id="temp0"></span>
                </li>
                <li><i class="day-icon" id="icon1"></i><span class="day-name" id="week1"></span><span class="day-temp"
                                                                                                      id="temp1"></span>
                </li>
                <li><i class="day-icon" id="icon2"></i><span class="day-name" id="week2"></span><span class="day-temp"
                                                                                                      id="temp2"></span>
                </li>
                <li><i class="day-icon" id="icon3"></i><span class="day-name" id="week3"></span><span class="day-temp"
                                                                                                      id="temp3"></span>
                </li>
                <div class="clear"></div>
            </ul>
        </div>
        <div class="location-container">
            <button class="location-button"><span id="ip"></span></button>
        </div>
    </div>
</div>


Done!

相关文章
|
10月前
|
算法 Java Go
【GoGin】(1)上手Go Gin 基于Go语言开发的Web框架,本文介绍了各种路由的配置信息;包含各场景下请求参数的基本传入接收
gin 框架中采用的路优酷是基于httprouter做的是一个高性能的 HTTP 请求路由器,适用于 Go 语言。它的设计目标是提供高效的路由匹配和低内存占用,特别适合需要高性能和简单路由的应用场景。
689 4
|
缓存 负载均衡 API
深入解析电商支付API的性能瓶颈与解决方案
在电商快速发展的当下,支付API的性能直接影响用户体验与交易成功率。本文深入分析支付API在高并发下的性能瓶颈,并提供包括CDN加速、异步处理、缓存优化、数据库索引、负载均衡等在内的系统性解决方案,助力开发者提升支付效率,保障交易流畅稳定。
|
API 定位技术 调度
实现精准定位的—坐标系经纬度转换API技术说明和行业应用
在地图服务、物流调度等应用中,多源地理位置数据因采用不同坐标系(如WGS84、GCJ02、BD09)需统一转换,以避免位置偏移影响路径规划与分析精度。本文介绍坐标转换背景、技术方案及Python调用示例,强调其在智慧交通与物流系统中的重要性。
1116 0
|
边缘计算 监控 Java
跨境电商 API 对接避坑指南:亚马逊 SP-API 超时问题的 5 种解决方案(附重试代码模板)
在对接亚马逊 SP-API 时,超时问题常导致订单延迟、库存失败,影响运营。本文总结某 3C 品牌实战经验,详解超时的 3 大根源与 5 大解决方案,涵盖动态超时、重试机制、请求拆分、并发控制与边缘加速,并附可复用 Python 代码,助你将超时率从 20% 降至 1% 以下。
|
缓存 JavaScript 前端开发
鸿蒙5开发宝藏案例分享---Web开发优化案例分享
本文深入解读鸿蒙官方文档中的 `ArkWeb` 性能优化技巧,从预启动进程到预渲染,涵盖预下载、预连接、预取POST等八大优化策略。通过代码示例详解如何提升Web页面加载速度,助你打造流畅的HarmonyOS应用体验。内容实用,按需选用,让H5页面快到飞起!
|
JavaScript 前端开发 API
鸿蒙5开发宝藏案例分享---Web加载时延优化解析
本文深入解析了鸿蒙开发中Web加载完成时延的优化技巧,结合官方案例与实际代码,助你提升性能。核心内容包括:使用DevEco Profiler和DevTools定位瓶颈、四大优化方向(资源合并、接口预取、图片懒加载、任务拆解)及高频手段总结。同时提供性能优化黄金准则,如首屏资源控制在300KB内、关键接口响应≤200ms等,帮助开发者实现丝般流畅体验。
|
10月前
|
缓存 数据可视化 定位技术
快递鸟快递API技术指南:获取物流轨迹信息与轨迹地图的解决方案
在当今电商竞争激烈的环境中,物流体验已成为提升用户满意度的关键因素。研究表明,超过 75% 的消费者会因物流信息不透明而放弃下单。
2147 1
|
11月前
|
运维 监控 安全
EventLog Analyzer:高效的Web服务器日志监控与审计解决方案
ManageEngine EventLog Analyzer是一款企业级Web服务器日志监控与审计工具,支持Apache、IIS、Nginx等主流服务器,实现日志集中管理、实时威胁检测、合规报表生成及可视化分析,助力企业应对安全攻击与合规挑战,提升运维效率。
517 1
|
10月前
|
人工智能 自然语言处理 测试技术
Apipost智能搜索:只需用业务语言描述需求,就能精准定位目标接口,API 搜索的下一代形态!
在大型项目中,API 数量庞大、命名不一,导致“找接口”耗时费力。传统工具依赖关键词搜索,难以应对语义模糊或命名不规范的场景。Apipost AI 智能搜索功能,支持自然语言查询,如“和用户登录有关的接口”,系统可理解语义并精准匹配目标接口。无论是新人上手、模糊查找还是批量定位,都能大幅提升检索效率,降低协作成本。从关键词到语义理解,智能搜索让开发者少花时间找接口,多专注核心开发,真正实现高效协作。
|
12月前
|
人工智能 JSON 前端开发
Mock 在 API 研发中的痛点、价值与进化及Apipost解决方案最佳实践
在 API 开发中,Mock 技术能有效解决后端接口未就绪带来的开发阻碍,保障前端独立高效开发。本文通过电商平台支付接口的实例,分析了常见 Mock 方案的局限性,并深入介绍了 Apipost 提供的灵活 Mock 能力:从固定值返回,到使用内置函数生成动态数据,再到自定义函数处理复杂逻辑,最后实现根据请求参数返回不同响应。这些能力不仅提升了开发效率,也增强了测试的全面性,为前后端协作提供了更高效的解决方案。
609 3