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

ジオコーディング バージョン v2 を使用していましたが、Google はそのバージョンを v3 にアップグレードしました。

  • このバージョンを使用すると、csv として直接 ourput を取得できません
  • xml または Json メソッドを使用します。
  • データを簡単に解析できる XML を使用することをお勧めします

バージョン 2 はもう存在しません。ステータス コード 610、ジオコード

詳細については、以下のリンクを確認してください https://developers.google.com/maps/documentation/geocoding/#Results

于 2013-03-18T09:21:53.707 に答える
0

こんにちは Reena 私も 1 か月前に同じ号を受け取りましたが、この特定の部分だけを変更しました。これを確認してください。

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

この結果の近くにブレーク ポイントを保持し、何を取得しているかを確認します。これがあなたを助けることを願っています

于 2013-03-18T07:33:42.153 に答える