1つの地理コードリクエストを介して複数の住所を送信する方法はありますか?
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
addMarker(results[0].geometry.location);
var the_string = generate_string(elements, a, address);
infowindow[a] = new google.maps.InfoWindow({
content: the_string
});
google.maps.event.addListener(markersArray[a], "click", function() {
infowindow[a].open(map, markersArray[a]);
});
} else {
alert("Geocode was not successful for the following reason: " + status);
}
});
ここで、addressにはアドレスの配列が含まれています。理由は、GoogleマップとここでGoogle Map JavascriptAPIv3を使用しているときにここでOVER_QUERY_LIMITに対処された「OVER_QUERY_LIMIT」に遭遇することです-OVER_QUERY_LIMITエラー
クライアントのサーバー側バージョンの使用を開始するか、javascript apiを続行して、ジオコーダー呼び出しを介してアドレスの配列を送信するのに役立つかどうか疑問に思っていましたか?
あなたの意見や経験では、フィールドに無限の量のアドレスを入力してから[マップにプロット]ボタンを押すことができるアプリケーションがある場合、API呼び出し、ジオコーディングなどの観点からこれをどのように行いますか?
編集:////////////////////////
私は今このコードを使用しています:
class geocoder{
static private $url = "http://maps.google.com/maps/api/geocode/json?sensor=false&address=";
static public function getLocation($address){
$url = self::$url.urlencode($address);
$resp_json = self::curl_file_get_contents($url);
$resp = json_decode($resp_json, true);
if($resp['status']='OK'){
return $resp['results'][0]['geometry']['location'];
}else{
return false;
}
}
static private function curl_file_get_contents($URL){
$c = curl_init();
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_URL, $URL);
$contents = curl_exec($c);
curl_close($c);
if ($contents) return $contents;
else return FALSE;
}
}
そしてそれをそのように呼ぶ:
$address = urlencode($field_set["value"]);
$loc = geocoder::getLocation($address);
配置されているすべてのアドレスのループ内(この場合は20回)。
ループが2つの異なる長さと緯度を正しく持っているかどうかに関係なく、マップ上に10個のマーカーのみを配置します。
最後の10latlngsに対してnullを返します:s
編集:///////////////////////////
私はこれを呼び出すループにスリープを設定しました:
$loc = geocoder::getLocation($address);
8番目のジオコーディングごとに、1秒間一時停止してから続行します。これにより、すべてのジオコーダーの場所を正しくレンダリングできるようになります...しかし、綿毛のように見えます。
何か案は?