PHP Google Maps Геокодирование Проблема загрузки XML - PullRequest
1 голос
/ 10 мая 2011

Это действительно странно и меня сбивает с толку.У меня есть 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 />";
}
...