首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# 獲取天氣資訊完整方案:定位 + 天氣 API 整合實戰

     編輯:程式設計綜合問答

需求拆解

  1. 獲取當前位置(省、市)。
  2. 根據位置查詢即時天氣(溫度、AQI、風力、濕度、天氣狀況等)。

方案一:IP 定位 + 免費天氣 API(適合桌面/服務端)

  • 定位:呼叫 https://ip-api.com/json/ 或淘騰 IP 庫,解析 regionName (省)、city (市)。
  • 天氣:推薦 和風天氣、彩雲天氣、OpenWeatherMap 免費額度。註冊獲取 Key,請求例:
    GET https://devapi.qweather.com/v7/weather/now?location=101010100&key=YOUR_KEY
    
    解析 JSON 取得 temp, text, windDir, humidity, aqi 等。

方案二:GPS 定位 + 系統服務(適用移動端 Xamarin/MAUI)

  • 使用 Geolocator 獲取經緯度。
  • 經緯度反地理編碼得城市名(或直接用經緯度查詢支援座標的天氣 API)。

C# 核心代碼片段

using System.Net.Http;
using Newtonsoft.Json.Linq;

public async Task GetWeatherAsync(string city) {
    // 1. 獲取城市 ID (以和風為例,需先調用城市查詢介面)
    // 2. 查詢即時天氣
    using (var client = new HttpClient()) {
        string url = $"https://devapi.qweather.com/v7/weather/now?location={cityId}&key={KEY}";
        string json = await client.GetStringAsync(url);
        JObject jo = JObject.Parse(json);
        return new WeatherInfo {
            Temperature = jo["now"]["temp"].ToString(),
            Condition = jo["now"]["text"].ToString(),
            Wind = jo["now"]["windDir"].ToString(),
            Humidity = jo["now"]["humidity"].ToString(),
            AQI = jo["now"]["aqi"]?.ToString()
        };
    }
}

參考資源

完整範例:C# 調用天氣 API 實現

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved