C# 如何对地址进行地理编码

标签 c# geocoding

我正在使用它来对地址进行地理编码

var address = "123 something st, somewhere";
var requestUri = string.Format("http://maps.googleapis.com/maps/api/geocode/xml?address={0}&sensor=false", Uri.EscapeDataString(address));

var request = WebRequest.Create(requestUri);
var response = request.GetResponse();
var xdoc = XDocument.Load(response.GetResponseStream());

var result = xdoc.Element("GeocodeResponse").Element("result");
var locationElement = result.Element("geometry").Element("location");
var lat = locationElement.Element("lat");
var lng = locationElement.Element("lng");

这似乎有效,但仔细观察后我发现它不起作用。

例如,如果我输入有效地址,它会对其进行很好的地理编码。 但如果我输入无效地址,有时它仍然可以很好地对其进行地理编码,并且结果将有一些其他地址。

例如,如果我提供地址“kl13jk5”,它不会对其进行地理编码,并且响应将为空。这就是预期的结果,因为地址“kl13jk5 ”无效。

但是,如果我输入“kl13jk5 denver ”,我将收到格式化地址的响应,例如 <formatted_address>DENVER CO, USA</formatted_address>但我希望得到 null,因为“kl13jk5 denver ”不是有效地址。

我上面的代码有什么问题?

最佳答案

您的代码没有问题,谷歌在找不到确切位置时会返回大致地址。如果您想知道它是否是精确匹配,您可以检查结果。检查 location_type 的值,它的值包括 GEOMETRIC_CENTER、“APPROXIMATE”等,您可以从中判断 google 是否猜测或找到了实际地址。 check location_type here 还有 partial_match

关于C# 如何对地址进行地理编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34348357/

相关文章:

r - Purrr-Fection : In Search of An Elegant Solution to Conditional Data Frame Operations Leveraging Purrr

java - 使用 java API 进行地理编码

c# - ASP.NET 网站调试速度极慢,有数千个临时 ASP.NET 文件

c# - Gridview 中的多列排序?

c# - WPF .GetElementById() 方法

c# - 找不到“ApplicationException”

google-maps - Google Maps API Autocomplete 仅绑定(bind)到英国

c# - 不在 C# 中处理的随机对象

swift - 使用 Swift 进行正向地理编码

ios - 寻找 iPad 开发的地理编码/映射建议