2011-12-20 6 views
1

私は緯度と経度を取得するためにアドレスを取得するためにGoogleを使用しています。私は約60-65の住所を通ります。毎回ランダムに5または6を取得し、0,0の座標ペアを返します。緯度と経度の検索0,0

インデックスが失敗するたびに、私はそれがアドレスの問題ではないと確信しています。ここで

は私が緯度と長い

を返すために使用していたコードは、それはおそらく私がforループ内からこのメソッドを呼び出していますということでしょうでしょうか?たぶんそれを何度も繰り返し呼び出すと、それは時々ヒックアップするでしょう?

-(CLLocationCoordinate2D)addressLocation:(NSString*)_address city:(NSString*)_city state:(NSString*)_state { 
    NSString *temp = [NSString stringWithFormat:@"%@, %@, %@", _address, _city, _state]; 
    NSString *urlString = [NSString stringWithFormat:@"http://maps.google.com/maps/geo?q=%@&output=csv", [temp stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 

    NSError* error = nil; 
    NSString *locationString = [NSString stringWithContentsOfURL:[NSURL URLWithString:urlString ] encoding:NSASCIIStringEncoding error:&error]; 

    NSArray *listItems = [locationString componentsSeparatedByString:@","]; 
    double latitude = 0.0; 
    double longitude = 0.0; 

    if([listItems count] >= 4 && [[listItems objectAtIndex:0] isEqualToString:@"200"]) { 
     latitude = [[listItems objectAtIndex:2] doubleValue]; 
     longitude = [[listItems objectAtIndex:3] doubleValue]; 
    } 
    else { 
     NSLog(@"Error: %@", [error description]);; 
    } 

    CLLocationCoordinate2D location; 
    location.latitude = latitude; 
    location.longitude = longitude; 

    return location; 
} 

誰がこれで問題が発生した場合ならば、私はしばらくの周りの仕事を見つけたEDIT

私は一度各アドレスの緯度と経度を見つけて私のリストを調べます。

Googleクエリからエラーが返された場合は、そのアドレスを保持配列に追加します。 私はフィロゼによって述べられたレート制限に合格したという意味です。

最初のスルースルーが完了した後、私はホールディングアレイを通って各アドレスの場所を見つけます。

私はこれをはるかにクリーンな実装があると確信していますが、ビジネスライセンスを取得することができない人のために、これはハッキングされた方法です。

私は、これは、あなたがlocationStringがnilであるかどうかを確認する必要があります コーリー

+0

Googleはこのサービスの利用方法に厳しい制限を設けており、乱用を検出し一時的に(または永続的に)アクセスをブロックするアルゴリズムを常に更新しています。あなたはあなたのシステムを遅くしようとすることができますが、それは明日の作業を停止することがあります。おそらくあなたはその目的のためにサービスを使用していないでしょうし、他のアドレス検索サービスを見つけるべきでしょう。 –

+0

ご意見はありますか? – random

+0

どのような変更を加えるべきかについての提案?多分あなたはレート制限されていることを検出してから、数秒待ってからルックアップを続けます。また、代替のサービスを提案している場合は、おそらく "Google Maps API For Business"サービスが最適です。または、openstreetmap.orgデータベースを独自のサーバーにダウンロードし、独自のジオコーディングを実行することもできます。 –

答えて

2

に役立ちます願っています。もしそうなら、エラーを見てください。私の推測では、あなたの通話はレート制限されているということです。

このサービスのGoogleの利用規約を見てください。

+0

私は彼らがレート制限されていると信じています。私は住所のリストを持っており、私は私に最も近いものを判断する必要があります。私は距離を決定するために彼らの位置座標を見つける他の方法を見ていません。 – random

+0

これは、アプリケーションの機能によって異なります。これは、技術的な問題よりもビジネス上の疑問です。特定のユースケースに必要なライセンス/契約をGoogleが判断する手助けをしてくれると確信しています。フォーラムをチェックする:http://code.google.com/apis/maps/documentation/premier/ –

+0

私はそれを見ましたが、私はビジネスライセンスのために17,000ドルが予算外であることを恐れています。 Firozeの他のサービスに関する提案はありますか? – random