我想在我的谷歌地图上包含学校位置,如果可能有关学校的一些数据,将会大大收到任何帮助。
此致
罗比
答案 0 :(得分:3)
UK Government list of schools and colleges直接来自英国政府网站,包括位置...您可能需要获取该位置并将其转换为纬度/长度(可能来自邮政编码数据)。
有关其他数据集的链接,请参阅this link,包括学生成绩和缺勤(按居住地点划分)
答案 1 :(得分:1)
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);
用于查询Google API的网址是:
private const string _GEOCODE_API_TEMPLATE = "http://maps.google.com/maps/geo?q={0}&output={1}&key={2}";
key
由Google申请并生成,特别适用于您的请求域。您可以免费获得此密钥(因此使用该服务),但速率有限 - 上次我检查时他们每天限制您50K请求。我忘记了你去申请密钥的网址了,但是如果你谷歌它就不会有太多问题......呵呵:)