有没有办法通过一个地理编码请求发送多个地址:
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);
}
});
其中地址包含地址数组。原因是我在使用 google maps和 here Google Map Javascript API v3 - 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 次)。
它只在地图上放置 10 个标记,无论循环是否正确具有 2 个不同的 lngs 和 lats。
它为最后 10 个 lat lngs 返回 null :s
编辑:///////////////////////////
我在调用这个的循环中放置了一个睡眠:
$loc = geocoder::getLocation($address);
每进行第 8 次地理编码,它会暂停一秒钟然后继续。这似乎允许正确呈现所有地理编码器位置......但这似乎是一个绒毛。
有任何想法吗?