Где я могу получить лат в Великобритании? - PullRequest
0 голосов
/ 07 февраля 2011

Я хотел бы включить школьные местоположения на свои карты Google, и если бы можно было получить некоторые данные о школе, любая помощь будет в значительной степени получена.

Привет

Robbie

Ответы [ 2 ]

3 голосов
/ 07 февраля 2011

Список школ и колледжей правительства Великобритании прямо из правительственной сети Великобритании, включая местоположение ... вам, вероятно, придется взять местоположение и преобразовать его в лат / лонг самостоятельно (возможно, из почтового индекса) данные).

См. эту ссылку для ссылок на дополнительные наборы данных, включая информацию об успеваемости и отсутствии учеников (по месту жительства)

1 голос
/ 07 февраля 2011

У 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 .... хех

...