# 初体验之腾讯位置服务彩云天气开发者api

初体验

最近接触到了boxjs,看到了里面一个比较有意思的彩云天气的脚本,由于自己本身就是彩云天气pro的用户,日常使用过程中感觉到彩云的降雨提醒还是挺方便的,于是就准备开始使用这个天气的脚本。
脚本主要用到两个平台的接口:

  1. 腾讯位置服务平台提供获取经纬度的接口
  2. 彩云天气申请开发者api调用对应经纬度的天气状况

测试环境选择了自己的iphone上的JSbox来运行一个简单的js脚本:

//简单思路就是 获取ip再获取天气信息
const locationKey = "XXXXXXXXXXXXX"
const weatherKey = "XXXXXXXXXXXX"

const apiList = {
    location:"https://apis.map.qq.com/ws"
}

function getLonLat(){
    $http.get({
        url: `${apiList.location}/location/v1/ip?key=${locationKey}`,
        handler: (resp) => {
            let location = resp.data&&resp.data.result&&resp.data.result.location
            getLocation(location)
        }
    });
}
function getLocation(location){
    $http.get({
        url: `${apiList.location}/geocoder/v1/?key=${locationKey}&location=${location.lat},${location.lng}`,
        handler: (resp) => {
            var data = resp.data;
            $console.info(data.result.formatted_addresses.recommend);
        }
    });
}

/**
 * 
 * @param {lat:"",lng:""} location 
 */
function getWeather(location){
    $http.get({
        url: `${apiList.weather}/${weatherKey}/${location.lng},${location.lat}/weather.json`,
        handler: (resp) => {
            let data = resp.data;
            console.info(data)
			//运行结果参照彩云天气https://open.caiyunapp.com/%E9%80%9A%E7%94%A8%E9%A2%84%E6%8A%A5%E6%8E%A5%E5%8F%A3/v2.5
        }
    });
}

getLonLat()

顿时醒悟

写到这其实我只是想测试一下两个接口的基本用法以及可用之处,然后突然想到jsbox里面内置的$location可以直接获取到设备的位置信息,通过这样获取到的位置坐标会比ip的更加精准

//根据原生SDK获取手机位置
function getPhoneLoc(){
    $location.fetch({
        handler: function(resp) {
            var lat = resp.lat;
            var lng = resp.lng;
            var alt = resp.alt;
            
            let loc = {lat:lat,lng:lng}
            getLocation(loc)
            
        }
    });
}

最后运行结果

各位晚安

原文地址:https://www.cnblogs.com/Eyeseas/p/13611457.html