Это действительно странно и меня сбивает с толку.У меня есть PHP-скрипт, который собирает данные из формы ввода адреса, форматирует их для службы геокодирования googlemaps, а затем загружает XML, который возвращает этот сервис, и извлекает из него широту / долготу.Что странно, так это то, что некоторые адреса возвращают сообщение «url not loading», но когда я копирую точную строку, которая выводится из сценария, и вставляет ее в мой браузер, я фактически получаю XML-файл.Кто-нибудь знает, что здесь происходит?
Вот строка, которая выводится эхом.Может быть, кто-то может сказать мне, что PHP не нравится в этом URL?
http://maps.google.com/maps/geo?output=xml&key=ABQIAAAAZe-W-lkccZSM2qC_Ci4JnBS97eShVNVCdPw2dK9jd_Ls-9Sg7hSJTMXMmezqrmN9bDDbO_CSRwChtw&q=285+East+Grand+Avenue,+Fox Lake, + IL, + 60020 & sensor = true_or_false
Вот скрипт:
//This section sends HTTP geocode to google and recieves the XML
$googlekey = "ABQIAAAAZe-W-lkccZSM2qC_Ci4JnBS97eShVNVCdPw2dK9jd_Ls-9Sg7hSJTMXMmezqrmN9bDDbO_CSRwChtw";
$mapAddress = urlencode($barAddress).",+".$barCity.",+".$barState.",+".$barZip;
echo $mapAddress."<br />";
$googleURL = "http://maps.google.com/maps/geo?output=xml&key=".$googlekey."&q=".$mapAddress."&sensor=true_or_false";
echo $googleURL."<br />";
$googlexml = simplexml_load_file($googleURL) or die("url not loading<br />");
$status = $googlexml - > Response - > Status - > code;
if (strcmp($status, "200") == 0) {
echo "barID:".$barID;
// Successful geocode
$coordinates = $googlexml - > Response - > Placemark - > Point - > coordinates;
$coordinatesSplit = split(",", $coordinates);
// Format: Longitude, Latitude, Altitude
$lat = $coordinatesSplit[1];
$lng = $coordinatesSplit[0];
echo "lat:".$lat." lon:".$lng;
$xmlUpdate = "/".$barID."/".$barID.".xml";
//This is the final query that updates
$updateQuery = sprintf("UPDATE userBars "." SET lat = '%s', lng = '%s', barXML = '%s' "." WHERE barID = '%s';", mysql_real_escape_string($lat), mysql_real_escape_string($lng), mysql_real_escape_string($xmlUpdate), mysql_real_escape_string($barID));
$updateResult = mysql_query($updateQuery);
if ($updateResult) {
echo "Successfully Geocoded!<br />";
} else {
echo "Geocode Not Successful!";
}
} else {
echo "Geocode Failed.";
}
}
} else {
echo "Error retrieving barID. Files and entries were not created successfully.<br />";
}