Intereting Posts
Как получить идентификатор адреса доставки / биллинга заказа за пределами API-интерфейса Magento? Как автоматически запускать один тест phpunit, когда он обновляется? Paginate result set, написав запрос с помощью подготовленных операторов, Вывести стандартный Base64 кодированный поток в формат PDF (PHP) В веб-разработке – что ASP.net может сделать, что PHP не может сделать? Можно ли использовать array_push в массиве SESSION в php? Система контроля доступа PHP PHP – Simpletest – Как тестировать классы «включено» Как избежать навигации по папкам с помощью манипуляции URL jQuery appendTo (), json не работает в IE 6,7,8 Могу ли я отображать все файлы cookie, установленные в PHP? Как заблокировать 100 000+ индивидуальных IP-адресов вызов мета-тегов через php $ _FILES я не получаю всю информацию из формы Я пытаюсь сделать html-форму, которая при заполнении будет вставляться в мою базу данных sql. однако я получаю эту ошибку, ни одна база данных не выбрана

PHP-код для добавления нового места в Google Адреса через API

Я работаю над интеграцией API Google Адресов в веб-приложение. Мне удалось успешно создать код, позволяющий пользователям искать места с помощью API и отображать результаты в приложении, так что это круто.

То, что я не смог выяснить, – это разрешить пользователям приложения добавлять новые места. То, что Google говорит, выполнимо. У них есть документация по этому поводу здесь –

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

Но нет примера кода, и мне сложно скомпрометировать PHP-код для реализации вызова add.


Это код, который я до сих пор придумал. Я заменил свой фактический ключ API на {ваш ключ} здесь.

Я продолжаю получать неверную ошибку сообщения –

400. Это ошибка. Ваш клиент выдал неверный или незаконный запрос. Это все, что мы знаем.


<?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>"; ?> 

Есть несколько проблем с вашим кодом.

Во-первых, вы должны использовать CURLOPT_HTTPHEADERS когда на самом деле это CURLOPT_HTTPHEADER (без CURLOPT_HTTPHEADER «S»). Эта строка должна гласить:

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

Затем Google не хочет, чтобы вы передавали имя параметра, просто значение. Другое дело, что $jsonpost уже JSON, поэтому нет необходимости вызывать json_encode . Строка должна читать:

 curl_setopt($ch, CURLOPT_POSTFIELDS, $fieldString); 

Для получения дополнительной информации проверьте документацию Google: http://code.google.com/apis/maps/documentation/places/#adding_a_place .

Полный код, исправленный, проверенный и работающий:

 <?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>";