如何使用c#winform使谷歌地图坐标请求更精确/准确?

时间:2013-09-17 15:17:19

标签: c# winforms google-maps coordinates

我正在使用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}&region=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 放大将显示在谷歌地图上。

由于

1 个答案:

答案 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)。如果是这种情况,给定的确切位置可能是该区域的中心或普遍接受的点。