下面是详细讲解“c#封装百度web服务geocodingapi、百度坐标转换示例”的完整攻略。
1.了解百度Web服务、GeoCodingAPI和坐标转换功能
在开始本教程之前,首先需要了解百度Web服务、GeoCodingAPI和坐标转换功能的作用。
1.1 百度Web服务
百度Web服务是百度提供的一种通过互联网进行信息传输的服务。通过百度Web服务,你可以快速构建自己的应用程序,并向云端请求数据,操作响应结果。
1.2 GeoCodingAPI
GeoCodingAPI是百度地图的一项API,它可以根据关键词、地名、地址或者经纬度等信息,获取具体的地理位置信息,同时还可以提供不同地理数据的转换。通过GeoCodingAPI,你可以轻松获得一个位置的详细信息,例如名称、经纬度、地址、电话和邮编等。
1.3 坐标转换
在使用GeoCodingAPI获取到具体位置的经纬度之后,我们还需要进行坐标转换,将百度地图提供的经纬度坐标转换为其他常用的坐标格式,例如GPS坐标、谷歌坐标等。
2.封装GeoCodingAPI和坐标转换方法
在介绍了GeoCodingAPI和坐标转换的作用之后,我们需要封装这些方法,便于我们在C#编写代码时调用。
2.1 调用GeoCodingAPI方法
以下是调用GeoCodingAPI的C#代码示例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using Newtonsoft.Json.Linq;
namespace BaiduMapAPI
{
class GeoCodingAPI
{
public static JObject GetLocation(string address)
{
WebClient webClient = new WebClient();
webClient.Encoding = Encoding.UTF8;
string url = "http://api.map.baidu.com/geocoding/v3/?address=" + address + "&output=json&ak=yourak";
string response = webClient.DownloadString(url);
JObject jo = JObject.Parse(response);
return jo;
}
}
}
在上面的代码中,我们通过C#的Http请求,请求百度地图提供的GeoCodingAPI,然后将返回的JSON数据解析成JObject对象,便于我们更方便的访问其中的具体数据。
2.2 坐标转换方法
以下是坐标转换方法的C#代码示例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using Newtonsoft.Json.Linq;
namespace BaiduMapAPI
{
class CoordConvertAPI
{
public static JObject CoordConvert(string coords, string from, string to)
{
WebClient webClient = new WebClient();
webClient.Encoding = Encoding.UTF8;
string url = "http://api.map.baidu.com/geoconv/v1/?coords=" + coords + "&from=" + from + "&to=" + to + "&ak=yourak";
string response = webClient.DownloadString(url);
JObject jo = JObject.Parse(response);
return jo;
}
}
}
通过以上代码,我们可以实现将百度地图提供的坐标格式转成其他常见的坐标格式,例如GPS坐标、谷歌坐标等。坐标格式的转换需要知道原坐标的类型和目标坐标的类型,以上代码中我们通过from和to参数指定原坐标和目标坐标的类型。
3.示例
在了解了GeoCodingAPI的请求和坐标转换的方法之后,我们可以通过以下两个示例来更好地理解和运用以上方法。
3.1 根据关键字查询位置信息
以下是根据关键字查询位置信息的代码示例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json.Linq;
namespace BaiduMapAPI
{
class Program
{
static void Main(string[] args)
{
string address = "北京市海淀区五棵松";
JObject joLocation = GeoCodingAPI.GetLocation(address);
string longitude = joLocation["result"]["location"]["lng"].ToString();
string latitude = joLocation["result"]["location"]["lat"].ToString();
Console.WriteLine("地址:" + address + "\n经度:" + longitude + "\n纬度:" + latitude);
Console.ReadLine();
}
}
}
在以上示例中,我们通过输入地址查询该地址的具体位置信息。在显示位置信息之前,我们通过GeoCodingAPI获取该地址的经纬度,然后通过坐标转换方法将其转换为目标坐标类型,最后通过控制台输出该地址的具体信息。
3.2 经纬度坐标转换示例
以下是经纬度坐标转换的C#代码示例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json.Linq;
namespace BaiduMapAPI
{
class Program
{
static void Main(string[] args)
{
// 百度坐标转GPS坐标
string coords = "116.403946, 39.915150";
JObject joCoordConvert = CoordConvertAPI.CoordConvert(coords, "bd09ll", "gcj02");
string longitudeGPS = joCoordConvert["result"][0]["x"].ToString();
string latitudeGPS = joCoordConvert["result"][0]["y"].ToString();
Console.WriteLine("原坐标:" + coords + "\n转换后GPS坐标:(" + longitudeGPS + ", " + latitudeGPS + ")");
Console.ReadLine();
// GPS坐标转百度坐标
coords = longitudeGPS + "," + latitudeGPS;
JObject joCoordConvert1 = CoordConvertAPI.CoordConvert(coords, "gcj02", "bd09ll");
string longitudeBD09 = joCoordConvert1["result"][0]["x"].ToString();
string latitudeBD09 = joCoordConvert1["result"][0]["y"].ToString();
Console.WriteLine("原坐标:" + coords + "\n转换后百度坐标:(" + longitudeBD09 + ", " + latitudeBD09 + ")");
Console.ReadLine();
}
}
}
以上代码中,我们使用两个不同的代码块将百度坐标和GPS坐标互相转换。在每个代码块中,我们通过输入原来的坐标和需要转换的目标坐标类型,来得到转换后的坐标结果。
以上就是" c#封装百度web服务geocodingapi、百度坐标转换示例 "的完整攻略和两个示例。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c#封装百度web服务geocoding api 、百度坐标转换示例 - Python技术站