我使用下面的代码在 C#.Net 中获取纬度和经度。但在某些情况下,它提供了错误的纬度/经度。例如,如果我搜索“Braås skola Växjö Sweden”,它会提供 [56.879004,14.805852],这是 Växjö 的纬度/经度,而不是我们搜索的内容!那么我们如何解决这个问题以获得准确的纬度/经度。这个问题在很多情况下都会发生,例如“Braås förskola 44:an VÄXJÖ”、“Björkens förskola VÄXJÖ”。
private const String _googleUri = "http://maps.google.com/maps/geo?q=";
private const String _googleKey = "yourkey";
private const String _outputType = "csv";
private static Uri GetGeocodeUri(String address) {
address = HttpUtility.UrlEncode(address);
return new Uri(String.Format("{0}{1}&output={2}&key={3}", _googleUri,
address, _outputType, _googleKey));
}
public static Coordinate GetCoordinates(String address) {
WebClient client = new WebClient();
Uri uri = GetGeocodeUri(address);
String[] geocodeInfo = client.DownloadString(uri).Split(',');
return new Coordinate(Convert.ToDecimal(geocodeInfo[2]), Convert.ToDecimal(geocodeInfo[3]));
}
请帮助我获得更好的解决方案。