0

在我的 asp.net 应用程序中,我使用 Geocode 来查找给定地址的纬度和经度,并将它们保存在数据库中。非常奇怪的是,它从过去 8 个月开始运行良好,但突然从 2 天开始,它为我们提供的每个地址返回零,即使我曾尝试使用它正在工作的旧地址,但现在它也返回零作为经度和纬度。

请让我知道如何解决此问题

这是我正在使用的代码,以前可以使用,我没有更改任何内容

public interface ISpatialCoordinate
{
    decimal Latitude { get; set; }
    decimal Longitude { get; set; }
}

/// <summary>
/// Coordiate structure. Holds Latitude and Longitude.
/// </summary>
public struct Coordinate : ISpatialCoordinate
{
    private decimal _latitude;
    private decimal _longitude;

    public Coordinate(decimal latitude, decimal longitude)
    {
        _latitude = latitude;
        _longitude = longitude;
    }

    #region ISpatialCoordinate Members

    public decimal Latitude
    {
        get
        {
            return _latitude;
        }
        set
        {
            this._latitude = value;
        }
    }

    public decimal Longitude
    {
        get
        {
            return _longitude;
        }
        set
        {
            this._longitude = value;
        }
    }

    #endregion
}

public class Geocode
{

    private const string _googleUri = "https://maps.google.com/maps/geo?q=";
    private const string _outputType = "csv"; // Available options: csv, xml, kml, json
    //
    private const string _googleKey = ""; //here i am giving my key

    /// <summary>
    /// Returns a Uri of the Google code Geocoding Uri.
    /// </summary>
    /// <param name="address">The address to get the geocode for.</param>
    /// <returns>A new Uri</returns>
    private static Uri GetGeocodeUri(string address)
    {
       // string googleKey = ConfigurationManager.AppSettings["googleApiKey"].ToString();
        address = HttpUtility.UrlEncode(address);
        return new Uri(String.Format("{0}{1}&output={2}&key={3}", _googleUri, address, _outputType, _googleKey));
    }

    /// <summary>
    /// Gets a Coordinate from a address.
    /// </summary>
    /// <param name="address">An address.
    ///     <remarks>
    ///         <example>
    ///         3276 Westchester Ave, Bronx, NY 10461
    /// 
    ///         or 
    /// 
    ///         New York, NY 
    /// 
    ///         or
    /// 
    ///         10461  (just a zipcode)
    ///         </example>
    ///     </remarks>
    /// </param>
    /// <returns>A spatial coordinate that contains the latitude and longitude of the address.</returns>
    public static Coordinate GetCoordinates(string address)
    {
        WebClient client = new WebClient();
        Uri uri = GetGeocodeUri(address);

        /*  The first number is the status code, 
         * the second is the accuracy, 
         * the third is the latitude, 
         * the fourth one is the longitude.
         */
        string[] geocodeInfo = client.DownloadString(uri).Split(',');

        return new Coordinate(Convert.ToDecimal(geocodeInfo[2]), Convert.ToDecimal(geocodeInfo[3]));
    }

}
4

2 回答 2

0

嗨 Reena 我一个月前也收到了同样的问题,但我只更改了这个特定部分请检查一下。

latitude = results[0].geometry.location.Ya;
longlitude = results[0].geometry.location.Za;

将断点保持在此结果附近并检查您正在获取的内容。希望这对你有帮助

于 2013-03-18T07:33:42.153 回答
0

您一直在使用 Geocoding Version v2 现在 google 将其版本升级到 v3。

  • 使用此版本,您无法将我们的输入直接作为 csv
  • 您想使用 xml 或 Json 方法。
  • 更好地使用 XML 更容易解析数据

版本 2 不再存在。状态码 610,地理编码

查看以下链接了解更多详情 https://developers.google.com/maps/documentation/geocoding/#Results

于 2013-03-18T09:21:53.707 回答