我正在使用Google maps api构建一个winform项目。即时发送地址,我得到地址坐标作为结果。但是,我没有得到最准确的结果...... 这是我的代码:
using System.Net;
using System.Runtime.Serialization.Json;
namespace WinForm_Project
{
class GoogleMaps
{
public static GeoResponse GetGeoCodedResults(string address) and uses google maps to retrieve the address's coordinates.
{
string url = string.Format("http://maps.google.com/maps/api/geocode/json?address={0}®ion=dk&sensor=false",HttpUtility.UrlEncode(address));
var request = (HttpWebRequest)HttpWebRequest.Create(url);
request.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate");
request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(GeoResponse));
var res = (GeoResponse)serializer.ReadObject(request.GetResponse().GetResponseStream());
return res;
}
}
}
这部分工作正常。 (只是要清楚 - 我的winform应用程序不包含谷歌地图) 我注意到当我在谷歌地图的网站上输入地址时,我得到了一定的坐标 - 但是当我放大时,坐标(纬度,经度)变得更加准确......
有没有办法更改请求\代码以从谷歌获得更准确的结果?例如 Max 放大将显示在谷歌地图上。
由于
答案 0 :(得分:0)
使用Google的JSON选项,您的结果将包含类似的内容。
...
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 40.91525559999999,
"lng" : -73.70027209999999
},
"southwest" : {
"lat" : 40.495908,
"lng" : -74.2590879
}
},
"location" : {
"lat" : 40.7143528,
"lng" : -74.00597309999999
...
确切的'点'将在结果 - > geometry - >位置下。但是,如果您的查询是一个区域,比如纽约市,那么您将获得该区域的边界框(结果 - > geometry - > bounds)。如果是这种情况,给定的确切位置可能是该区域的中心或普遍接受的点。