C#調(diào)用百度地圖API根據(jù)地名獲取經(jīng)緯度geocoding
前言
公司的一個內(nèi)部網(wǎng)站維護,需要根據(jù)地名填寫經(jīng)緯度,最終同echarts生成地圖。
之前數(shù)據(jù)比較少,直接經(jīng)緯度查詢查的,https://jingweidu.bmcx.com/
現(xiàn)在數(shù)據(jù)越來越多,手動查詢太麻煩,于是想到通過地圖api批量查詢,最后選擇了百度地圖API。
步驟 一、到百度地圖開放平臺注冊認證,并創(chuàng)建應(yīng)用,獲取ak
百度地圖開放平臺:https://lbsyun.baidu.com/apiconsole/key#/home
二、查看api文檔
根據(jù)地名獲取經(jīng)緯度的接口,可以使用逆地理編碼
https://api.map.baidu.com/geocoding/v3/?address=北京市海淀區(qū)上地十街10號&output=json&ak=您的ak&callback=showLocation //GET請求
接口功能介紹如下https://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding
查看請求參數(shù)
可以看到幾個主要的參數(shù)address,ak,output
、查看返回結(jié)果參數(shù)
status為返回結(jié)果狀態(tài)值,成功返回0,其它值都是失敗
三、創(chuàng)建GeocodingMap類,根據(jù)地名獲取經(jīng)緯度
根據(jù)api返回結(jié)果參數(shù),創(chuàng)建結(jié)果模型
public class GeocodingResult { public int status { get; set; } = -1; public string msg { get; set; } public Result result { get; set; } } public class Result { public Location location { get; set; } public int precise { get; set; } public int confidence { get; set; } public int comprehension { get; set; } public string level { get; set; } } public class Location { public float lng { get; set; } public float lat { get; set; } }
創(chuàng)建幾個類,存儲ak,請求url,獲取經(jīng)緯度,為了演示方便,這里將幾個類寫在一起
public class Config { public static string Ak { get; set; } = "xxxxxxxxxxxxxx";//這里根據(jù)實際填寫,填寫剛才申請的應(yīng)用ak } public class HttpRequestHelper { public static async Task<string> RequestUrl(string url) { string content = string.Empty; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { using (StreamReader sr = new StreamReader(response.GetResponseStream())) { content = await sr.ReadToEndAsync(); } } return content; } } public class GeocodingMap { public static async Task<GeocodingResult> GetGeocoding(string address) { //API 文檔:https://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding string url = @$"https://api.map.baidu.com/geocoding/v3/?address={address}&output=json&ak={Config.Ak}"; string strJson = await HttpRequestHelper.RequestUrl(url); var requestResult = JsonSerializer.Deserialize<GeocodingResult>(strJson); return requestResult; } }
調(diào)用
var geocoding = await GeocodingMap.GetGeocoding(address); if (geocoding.status == 0) { //經(jīng)緯度 var axisX = geocoding.result.location.lng; var axisY = geocoding.result.location.lat }
參考
百度地圖API根據(jù)地名獲取經(jīng)緯度 - 慕尼黑哲哉 - 博客園
到此這篇關(guān)于C#調(diào)用百度地圖API根據(jù)地名獲取經(jīng)緯度geocoding的文章就介紹到這了,更多相關(guān)C#百度地圖獲取經(jīng)緯度內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
c#基于WinForm的Socket實現(xiàn)簡單的聊天室 IM
這篇文章主要介紹了c#基于WinForm的Socket實現(xiàn)簡單的聊天室 IM的步驟,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下2021-05-05C#中BitmapImage與BitmapSource接口的區(qū)別對比小結(jié)
BitmapImage和BitmapSource都可以用于表示和顯示圖像,本文就來介紹一下C#中BitmapImage與BitmapSource接口的區(qū)別對比,具有一定的參考價值,感興趣的可以了解一下2024-03-03c# EPPlus秘籍之Excel實現(xiàn)圖表導(dǎo)出
這篇文章主要為大家介紹了c# EPPlus秘籍之Excel實現(xiàn)圖表導(dǎo)出示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-12-12