Я немного запутался по этому поводу.
Я пытаюсь найти латы и ссылки для локатора магазина и работаю с Geolocator от Google и их учебником на http://code.google.com/apis/maps/articles/phpsqlgeocode.html,, ноне могу вернуть ничего, кроме ужасной 620 Ошибка слишком большого количества запросов.
Что действительно странно для меня, так это то, что если я скопирую свой $ request_url в браузер, я получу весь XML, как и ожидалось, но с использованием PHPsimplexml_load_file ($ request_url) всегда возвращает код ошибки 620, независимо от длительности задержки, независимо от того, сколько разных ключей API я использую.
Кто-нибудь знает, что с этим случилось?Я делаю какую-то ужасную ошибку?
Мой код приведен ниже, извините за подробные комментарии и отголоски:
<code><?php
$host = 'xxx';
$db = 'xxx';
$u = 'xxx';
$p = 'xxx';
define("MAPS_HOST", "maps.google.com");
define("KEY", "xxx");
// Opens a connection to a MySQL server
$connection = mysql_connect($host, $u, $p);
if (!$connection) {
die("Not connected : " . mysql_error());
}
// Set the active MySQL database
$db_selected = mysql_select_db($db, $connection);
if (!$db_selected) {
die("Can\'t use db : " . mysql_error());
}
// Select all the rows in the markers table
$query = "SELECT * FROM BH_locations";
$result = mysql_query($query);
if (!$result) {
die("Invalid query: " . mysql_error());
}
// Initialize delay in geocode speed
$delay = 0;
$base_url = "http://" . MAPS_HOST . "/maps/geo?output=xml" . "&key=" . KEY;
// Iterate through the rows, geocoding each address
while ($row = @mysql_fetch_assoc($result)) {
echo '<br /><br />row#' . $row['id'] . '<br />';
$geocode_pending = true;
while ($geocode_pending) {
echo 'started while loop at ' . date('G:i:s:u') . '<br />';
$address = $row["address"] . ', ' . $row['city'] . ', ' . $row['state'] . ' ' . $row['zip'];
echo $address . '<br />';
$id = $row["id"];
$request_url = $base_url . "&q=" . urlencode($address);
echo 'request url: ' . $request_url . '<br />';
$xml = simplexml_load_file($request_url) or die("url not loading");
echo '<pre>';
var_dump($xml);
echo '
';$ status = $ xml-> Response-> Status-> code;if (strcmp ($ status, "200") == 0) {// Успешное эхо-код геокода '
WOOHOO, ЭТО РАБОТАЛО !!! «;$ geocode_pending = false;/ * $ координаты = $ xml-> Response-> Placemark-> Point-> координаты;$ координатыSplit = split (",", $ координаты);// Формат: долгота, широта, высота над уровнем моря $ lat = $ordinSplit [1];$ lng = $ argumentsSplit [0];$ query = sprintf ("UPDATE BH_locations". "SET широта = '% s', долгота = '% s'". "WHERE id = '% s' LIMIT 1;", mysql_real_escape_string ($ lat), mysql_real_escape_string ($ lng), mysql_real_escape_string ($ id));$ update_result = mysql_query ($ query);if (! $ update_result) {die ("Неверный запрос:". mysql_error ());} * /} else if (strcmp ($ status, "620") == 0) {// слишком быстро отправил геокоды $ delay + = 100000;эхо 'ошибка 620«;} else {// ошибка с геокодом $ geocode_pending = false;эхо "адрес".$ адрес."не удалось геокодировать.";эхо "Статус получен".$ статус."\ П";} usleep ($ delay);}}?>