2011-06-26 16 views
8

Estoy trabajando en la integración de Google Places API en una aplicación web. Pude crear código para que los usuarios puedan buscar lugares usando la API y mostrar resultados en la aplicación, así que es genial.Código PHP para agregar un nuevo lugar a Google Places a través de la API

Lo que no he podido descifrar es cómo permitir a los usuarios de la aplicación agregar lugares nuevos. Algo que Google dice que es factible. Tienen algún tipo de documentación sobre el mismo aquí -

https://code.google.com/apis/maps/documentation/places/#adding_a_place

Pero no hay código de ejemplo y estoy teniendo algunas dificultades para la elaboración de código PHP para implementar la llamada add.


Este es el código que he encontrado hasta ahora. He reemplazado mi clave API actual con {tu llave} aquí.

sigo obteniendo un error de malformación posterior -

400. Eso es un error. Su cliente ha emitido una solicitud incorrecta o mal formada. Eso es todo lo que sabemos.


<?php 

function ProcessCurl($URL, $fieldString){ //Initiate Curl request and send back the result 
     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_HTTPHEADERS, array('Content-Type: application/json')); 
     curl_setopt($ch, CURLOPT_URL, $URL); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); 
     curl_setopt($ch, CURLOPT_VERBOSE, TRUE); 
     curl_setopt($ch, CURLOPT_POSTFIELDS, array('json'=>json_encode($fieldString))); 
     $resulta = curl_exec ($ch); 
     if (curl_errno($ch)) { 
       print curl_error($ch); 
     } else { 
     curl_close($ch); 
     } 
     echo $resulta; 
    } 

$jsonpost = '{ 
    "location": { 
    "lat": -33.8669710, 
    "lng": 151.1958750 
    }, 
    "accuracy": 50, 
    "name": "Daves Test!", 
    "types": ["shoe_store"], 
    "language": "en-AU" 
}'; 
$url = "https://maps.googleapis.com/maps/api/place/add/json?sensor=false&key={your key}"; 

$results = ProcessCurl ($url, $jsonpost); 

echo $results."<BR>"; 
?> 
+1

Sería de gran ayuda si usted mostró el código que ha escrito para tratar de hacer esto. – Trott

+1

Es tan simple como hacer una solicitud POST de acuerdo con el formato dado. Hay muchas maneras diferentes de hacerlo, si quieres un código de muestra, sería útil que nos mostraras lo que ya estás usando. (¿Cursillos? ¿Alguna biblioteca?) – deceze

Respuesta

8

Hay algunos problemas con su código.

En primer lugar, utilizaría CURLOPT_HTTPHEADERS cuando, de hecho, es CURLOPT_HTTPHEADER (sin el final "S"). Esa línea debería decir:

curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); 

A continuación, Google no quiere que pase un nombre de parámetro, solo un valor. La otra cosa es que el $jsonpost ya es JSON, por lo que no es necesario llamar al json_encode. La línea debe decir:

curl_setopt($ch, CURLOPT_POSTFIELDS, $fieldString); 

Para obtener más información, consulte la documentación de Google: http://code.google.com/apis/maps/documentation/places/#adding_a_place.

Su código completo, fijo, probado y de trabajo:

<?php 

function ProcessCurl($URL, $fieldString){ //Initiate Curl request and send back the result 
     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); 
     curl_setopt($ch, CURLOPT_URL, $URL); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
     curl_setopt($ch, CURLOPT_VERBOSE, 1); 
     //curl_setopt($ch, CURLOPT_POST, 1); 
     curl_setopt($ch, CURLOPT_POSTFIELDS, $fieldString); 
     $resulta = curl_exec ($ch); 
     if (curl_errno($ch)) { 
       print curl_error($ch); 
     } else { 
     curl_close($ch); 
     } 
     echo $resulta; 
    } 

$jsonpost = '{ 
    "location": { 
    "lat": -33.8669710, 
    "lng": 151.1958750 
    }, 
    "accuracy": 50, 
    "name": "Daves Test!", 
    "types": ["shoe_store"], 
    "language": "en-AU" 
}'; 

$url = "https://maps.googleapis.com/maps/api/place/add/json?sensor=false&key="; 

$results = ProcessCurl ($url, $jsonpost); 

echo $results."<BR>"; 
+0

Eso sí funciona totalmente. Gracias por aclarar dónde me equivoqué. Muy apreciado. – chriscaple

+0

Esto funcionó muy bien. Merci, Francois. – sehummel

+0

Hola, no encuentro el documento para agregar nuevos lugares usando API en el enlace proporcionado. ¿Sigue siendo compatible con agregar lugares usando API? – Krunal

Cuestiones relacionadas