2011-06-26 13 views
8

GoogleのプレイスAPIをウェブアプリケーションに統合する作業を進めています。 APIを使用して場所を検索し、結果をアプリに表示できるようにするコードを作成することができました。APIを使用してGoogleプレイスに新しい場所を追加するためのPHPコード

私が把握できなかったことは、アプリのユーザーが新しい場所を追加できるようにすることです。 Googleが言うことは何でもできる。彼らはここにいくつかのドキュメント持っている -

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

しかしなしサンプルコードを、私はいくつかの困難追加コールを実装するためにPHPコードをワークアウトを持っています。


これは私が今までに思い付いたコードです。実際の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>"; 
?> 
+1

あなたはこれをしようとするために書かれたコードを示した場合、それが参考になります。 – Trott

+1

指定された形式に従ってPOST要求を行うのと同じくらい簡単です。これを行うにはさまざまな方法があります。サンプルコードが必要な場合は、既に使用しているものを示した場合に役立ちます。 (cURL?ソケット?いくつかのライブラリ?) – deceze

答えて

8

あなたのコードを持ついくつかの問題があります。

最初に、CURLOPT_HTTPHEADERSをご利用ください。実際にはCURLOPT_HTTPHEADER(末尾の「S」は付いていません)です。その行には、次のように記述してください。

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

次に、Googleは値だけを渡すことを望ましくありません。もう1つは、$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>"; 
+0

それは本当に完全に動作します。どこが間違っていたかを明確にしてくれてありがとう深く感謝します。 – chriscaple

+0

これはうまくいった。メルシ、フランソワ。 – sehummel

+0

こんにちは、提供されたリンクにAPIを使用して新しい場所を追加する文書が見つかりません。まだAPIを使用して場所を追加することはできますか? – Krunal

関連する問題