1

私はグリッドビューRowDataBound1000msの強制スリープでグーグル距離をフェッチしようとしています、何の助けもありません、最初のクエリ、つまりグリッドビューの最初の行の正しい距離を取得しています、他のすべてはコンテンツの「Over-Query-Limit」を取得します変数、私は3つのことを知りたいです:

  • この状況に対する解決策はありますか?
  • グーグルは1日あたりのクエリを制限していますか?
  • グーグルは1秒あたりのクエリを制限していますか?
public int getDistance(string origin, string destination)
    {
        System.Threading.Thread.Sleep(1000);
        int distance = 0;
        string url = "http://maps.googleapis.com/maps/api/directions/json?origin=" + origin + "&destination=" + destination + "&sensor=false";
        string requesturl = url;
        string content = fileGetContents(requesturl);
        JObject o = JObject.Parse(content);
        try
        {
            distance = (int)o.SelectToken("routes[0].legs[0].distance.value");
            return distance;
        }
        catch
        {
            return distance;
        }
        return distance;
    }
4

1 に答える 1

-1

わかりました。1日あたり2500クエリを超えると、Google検索が有料サービスになります。別のロジックを使用しました。次のように、google.comなしで距離を計算できます。

    public decimal calcDistance(decimal latA, decimal longA, decimal latB, decimal longB)
    {

        double theDistance = (Math.Sin(DegreesToRadians(latA)) *
                Math.Sin(DegreesToRadians(latB)) +
                Math.Cos(DegreesToRadians(latA)) *
                Math.Cos(DegreesToRadians(latB)) *
                Math.Cos(DegreesToRadians(longA - longB)));

        return Convert.ToDecimal((RadiansToDegrees(Math.Acos(theDistance)))) * 69.09M * 1.6093M;
    }

    public double DegreesToRadians(decimal degrees)
    {
        return Convert.ToDouble((Convert.ToDecimal(Math.PI) / 180.0M) * degrees);
    }

    public double RadiansToDegrees(double radians)
    {
        return Convert.ToDouble((180.0M / Convert.ToDecimal(Math.PI)) * Convert.ToDecimal(radians));
    }
于 2012-10-29T06:35:14.463 に答える