使用Google Geocoding API的C#实现:从地址获取坐标(附代码)
通过地址获取坐标的C#实现
我来给你补全并整理这个通过地址获取经纬度坐标的C#函数,完整的可运行实现如下,同时会拆解里面的关键逻辑:
using System; using System.Net; using System.Xml.Linq; public static class GeocodingHelper { public static string GetCoordonneesAdresse(string adresse) { // 构建地理编码API请求URL,处理地址的URL编码 var requestUri = string.Format( "http://maps.googleapis.com/maps/api/geocode/xml?address={0}&sensor=false", Uri.EscapeDataString(adresse)); // 创建并发送Web请求,using语句确保资源自动释放 using (var response = WebRequest.Create(requestUri).GetResponse()) { // 加载XML响应文档 var xdoc = XDocument.Load(response.GetResponseStream()); // 检查是否有匹配的地址结果 var result = xdoc.Element("GeocodeResponse")?.Element("result"); if (result == null) { return "未找到该地址对应的坐标信息"; } // 定位到坐标所在的XML节点 var locationElement = result.Element("geometry")?.Element("location"); if (locationElement == null) { return "地址解析失败,无法提取坐标"; } // 提取纬度和经度值 var lat = locationElement.Element("lat")?.Value; var lng = locationElement.Element("lng")?.Value; if (string.IsNullOrEmpty(lat) || string.IsNullOrEmpty(lng)) { return "获取到的坐标信息不完整"; } // 返回格式化后的坐标字符串,也可根据需求改成返回自定义坐标对象 return $"纬度: {lat}, 经度: {lng}"; } } }
关键细节说明
- URL编码处理:用
Uri.EscapeDataString(adresse)处理地址里的空格、特殊符号,避免请求URL出现语法错误 - 资源安全释放:用
using包裹WebResponse,确保网络资源被自动回收,避免内存泄漏 - 空值容错:全程使用
?.空值运算符,防止API返回结构异常时触发空引用错误 - 友好错误提示:针对无匹配结果、坐标节点缺失等情况,返回明确的提示信息
你可以根据业务需求调整返回值格式,比如改成返回包含Lat和Lng属性的自定义类,替代当前的字符串返回形式。
内容的提问来源于stack exchange,提问作者Zeyukan Ich'
相关产品推荐
相关产品推荐

