2015-03-23 4 views
0

Помощь будет оценена по этому вопросу. У меня есть список физических адресов txt/xml, которые я передаю через сценарий геокодирования Google Maps, но столкнулся с проблемой, когда адрес выплескивает нулевое значение в файле coord_lat, и моя база данных MySQL отвергает это. Я получаю ошибку HTTP-запроса, поэтому я считаю, что это проблема, когда Google Maps отклоняет мое соединение и возвращает нулевое значение, которое затем ломает мой скрипт/базу данных. Кто-нибудь знает, как исправить это соединение и/или добавить что-то в скрипт? В настоящее время я использую HostGator в качестве своего хостинга.Ошибка HTTP-запроса - Геокодирование/HostGator Google Maps

Предупреждение: file_get_contents (http://maps.google.com/maps/geo?key=AIzaSyBmT9F_ixjLlW8oDiYVqgHqt1888&output=xml&q=xxx+here) [function.file-get-contents]: не удалось открыть поток: запрос HTTP не удался! HTTP/1.0 403 Запрещено в /includes/func.php в строке 297 {"status": "Failed", "data": "SQLSTATE [23000]: нарушение ограничения целостности: 1048 Столбец 'coord_lat' не может быть нулевым}} ErrorSyntaxError: Неожиданные лексемы

function get_lat_long($address, $zipcode) { 
    if(strlen($zipcode) == 4){ 
     $zipcode = '0' . $zipcode; 
     //echo $zipcode . "\n"; 
    } 



    $apikey = "AIzaSyBmT9F_ixjLlW8oDiYVqgHqt1888"; 
    $geourl = "http://maps.google.com/maps/geo?key=" . $apikey . "&output=xml&q=" . urlencode($address) . "+" . urlencode($zipcode); 
    //echo $geourl; 
    //echo "<br>"; 

    // Grab XML content using $geourl 
    $context = stream_context_create(array('http' => array('header' => 'Accept: application/xml'))); 

    $xml = file_get_contents($geourl, false, $context); 
    $xml = simplexml_load_string($xml); 


    //Parse the lat and long from the XML 
    $Lat = $xml->results->result->locations->location->displayLatLng->latLng->lat; 
    //echo $Lat; 
    $Lng = $xml->results->result->locations->location->displayLatLng->latLng->lng; 
    //echo $Lng; 


    //Return 
    if($Lng && $Lat) { 
     return array('lat'=>$Lat, 
        'lng'=>$Lng 
        );   
    } else { 
     return false; 
    } 

}

ответ

0

использование Google Maps v3, что вы используете v2 я думаю, и его больше не работает

  $Address = urlencode($Address); 
       $url='http://maps.googleapis.com/maps/api/geocode/json?address=egypt&sensor=false'; 
       $source = file_get_contents($url); 
       $obj = json_decode($source); 
       $lat = $obj->results[0]->geometry->location->lat; 
       $lng = $obj->results[0]->geometry->location->lng; 
+0

Я считаю, что вы правы. Я заметил в $ url, что египт включен. Как добавить мой уретенкод? urlencode ($ address). «+». urlencode ($ zipcode); 'к этому URL-адресу? – chronotrigga

+0

попробуйте следующее: json? Components = country: us | postal_code: zipcode & sensor = false –

Смежные вопросы