1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > C#调用百度地图API 根据地名获取经纬度geocoding

C#调用百度地图API 根据地名获取经纬度geocoding

时间:2023-03-24 19:13:14

相关推荐

C#调用百度地图API 根据地名获取经纬度geocoding

前言

公司的一个内部网站维护,需要根据地名填写经纬度,最终同echarts生成地图。

之前数据比较少,直接经纬度查询查的,/

现在数据越来越多,手动查询太麻烦,于是想到通过地图api批量查询,最后选择了百度地图API。

步骤

一、到百度地图开放平台注册认证,并创建应用,获取ak

百度地图开放平台:/apiconsole/key#/home

二、查看api文档

根据地名获取经纬度的接口,可以使用逆地理编码

https://api./geocoding/v3/?address=北京市海淀区上地十街10号&output=json&ak=您的ak&callback=showLocation //GET请求

接口功能介绍如下/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 文档:/index.php?title=webapi/guide/webservice-geocodingstring url = @$"https://api./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根据地名获取经纬度 - 慕尼黑哲哉 - 博客园

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。