C#调用百度地图API根据地名获取经纬度geocoding
前言
公司的一个内部网站维护,需要根据地名填写经纬度,最终同echarts生成地图。
之前数据比较少,直接经纬度查询查的,https://jingweidu.bmcx.com/
现在数据越来越多,手动查询太麻烦,于是想到通过地图api批量查询,最后选择了百度地图API。
步骤 一、到百度地图开放平台注册认证,并创建应用,获取ak
百度地图开放平台:https://lbsyun.baidu.com/apiconsole/key#/home
二、查看api文档
根据地名获取经纬度的接口,可以使用逆地理编码
https://api.map.baidu.com/geocoding/v3/?address=北京市海淀区上地十街10号&output=json&ak=您的ak&callback=showLocation //GET请求
接口功能介绍如下https://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding
查看请求参数
可以看到几个主要的参数address,ak,output
、查看返回结果参数
status为返回结果状态值,成功返回0,其它值都是失败
三、创建GeocodingMap类,根据地名获取经纬度
根据api返回结果参数,创建结果模型
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; }
}
创建几个类,存储ak,请求url,获取经纬度,为了演示方便,这里将几个类写在一起
public class Config
{
public static string Ak { get; set; } = "xxxxxxxxxxxxxx";//这里根据实际填写,填写刚才申请的应用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;
}
}
调用
var geocoding = await GeocodingMap.GetGeocoding(address);
if (geocoding.status == 0)
{
//经纬度
var axisX = geocoding.result.location.lng;
var axisY = geocoding.result.location.lat
}
参考
百度地图API根据地名获取经纬度 - 慕尼黑哲哉 - 博客园
到此这篇关于C#调用百度地图API根据地名获取经纬度geocoding的文章就介绍到这了,更多相关C#百度地图获取经纬度内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341