Проблема с загрузкой XML-геокодирования PHP Google Maps

#php #xml #google-maps #geocoding

#php #xml #google-карты #геокодирование

Вопрос:

Это действительно странно и ставит меня в тупик. У меня есть PHP-скрипт, который собирает данные из формы ввода адреса, форматирует их для службы геокодирования googlemaps, а затем загружает xml, возвращаемый этой службой, и извлекает из него широту / lng. Странно то, что некоторые адреса возвращают сообщение о том, что URL не загружается, но когда я копирую точную строку echod, которую отправляет скрипт, и вставляю ее в свой браузер, я действительно получаю XML-файл. У кого-нибудь есть идеи, что здесь может происходить?

Вот строка, которая выводится эхом. Может быть, кто-нибудь может сказать мне, что PHP не нравится в этом URL?

http://maps.google.com/maps/geo?output=xmlamp;key=ABQIAAAAZe-W-lkccZSM2qC_Ci4JnBS97eShVNVCdPw2dK9jd_Ls-9Sg7hSJTMXMmezqrmN9bDDbO_CSRwChtwamp;q=285 East Grand Avenue, Fox Lake, IL, 60020 amp; 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=xmlamp;key=".$googlekey."amp;q=".$mapAddress."amp;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 />";
}
  

Комментарии:

1. Ого! Размещение этой ссылки на этом форуме просто заставило меня понять, что это потому, что я не кодировал URL для города, и любой город с отдельными названиями отбрасывал ее. Решена!

2. Просто примечание: очистка координат с помощью shell-скрипта работает без google-ключа.