У Google есть служба геокодирования, которую вы можете использовать, если знаете адрес. Этот фрагмент кода запросит у Google широту и долготу адреса, когда у вас есть широта и долгота, и вы сможете отобразить положение школы на карте Google:
public string GeocodeAddress(string address)
{
DateTime startTime = DateTime.Now;
address = address.Replace(' ', '+');
string url = string.Format(_GEOCODE_API_TEMPLATE, address, "csv", _GOOGLE_API_KEY);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
IWebProxy proxy = WebRequest.DefaultWebProxy;
proxy.Credentials = CredentialCache.DefaultNetworkCredentials;
request.Proxy = proxy;
StringBuilder location = new StringBuilder();
HttpWebResponse response = null;
try
{
response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode != HttpStatusCode.OK)
throw new System.Net.WebException( string.Format("Bad response code: {0}", response.StatusCode));
StreamReader sr = new StreamReader(response.GetResponseStream(), System.Text.Encoding.GetEncoding("utf-8"));
char[] chars = new char[256];
int pos = 0;
int numCharsRead = 0;
while ( (numCharsRead = sr.Read(chars, 0, chars.Length)) > 0)
{
pos += numCharsRead;
location.Append(chars, 0, numCharsRead);
}
}
finally
{
if (response != null)
response.Close();
}
return location.ToString();
}
Местоположение, которое затем возвращается, необходимо проанализировать:
float latitude, longitude;
float.TryParse(ar.RawGeocode.Split(',')[2], out latitude);
float.TryParse(ar.RawGeocode.Split(',')[3], out longitude);
URL, используемый для запроса Google API:
private const string _GEOCODE_API_TEMPLATE = "http://maps.google.com/maps/geo?q={0}&output={1}&key={2}";
key
применяется и генерируется Google и относится к запрашивающему домену. Вы можете получить этот ключ (и, следовательно, воспользоваться услугой) бесплатно, но он ограничен по скорости - в прошлый раз, когда я проверял, они ограничивали вас 50 000 запросов в день. Я забыл URL-адрес, по которому вы ходите, чтобы подать заявку на ключ, но у вас не должно возникнуть особых проблем, если вы воспользуетесь им Google .... хех