PHPでウェブの世界と繋がろう!
menu
ホーム > PHP と Twitter > Twitter API > Places & Geo(場所とジオコード) > つぶやき 投稿で使用されている場所を検索 geo search

つぶやき 投稿で使用されている場所を検索 geo search

Pocket

Twitter API geo/search

API Resource
GET geo/search
概要
 ステータス更新(つぶやき投稿)時に使用されている可能性のある位置情報を検索します。

「経度/緯度のペア」、または、「IPアドレス」、または、「名前」を指定すれば、
ステータス更新(つぶやき投稿)時に place_id(geocode) として使用されているであろう、すべての有効な位置情報一覧を取得できます。

概念的には、認証ユーザー(自分)が指定した場所から位置情報一覧を作成し、その場所が他のTwitterユーザーにより使用されている位置情報かどうか検証し、
ステータス更新(つぶやき投稿)時に、この場所のIDを使用することが出来ます。

これは、ステータス更新(つぶやき投稿)時に、パラメーター place_id として有効な場所を発見する場合に推奨される方法です。
生の地理情報を直接取得する geo/reverse_geocode とは異なり、認証ユーザー(自分)へ位置情報一覧からさらに有効な位置情報取得を再注文したようなアプローチを提供してくれます。
このアプローチは、他のユーザーが使用している有効な位置情報により、インタラクティブなマッチングを可能にします。

原文
Resource URL(リソースURL)
http://api.twitter.com/1/geo/search.json
Resource Information(リソース情報)
Rate Limited(制限) Yes(あり)
Requires Authentication(認証) No(なし)
Response Formats(フォーマット) json
HTTP Methods(HTTPメソッド) GET
Parameters(パラメーター)
 次のパラメーター lat,long,ip,query これらの少なくとも一つは指定する必要があります。

lat
※オプション
サンプル値:37.7821120598956 検索する地点の緯度を指定します。有効範囲は北緯が+90.0まで、南緯は-90.0まで、小数点以下8桁まで指定可能です。
有効範囲外の値を指定した場合やlongパラメータが指定されていない場合は無効になります。
long
※オプション
サンプル値:-122.400612831116 検索する地点の軽度を指定します。有効範囲は東経が+180.0まで、西経は-180.0まで、小数点以下8桁まで指定可能です。
有効範囲外の値を指定した場合やlatパラメータが指定されていない場合は無効になります。
query
※オプション
サンプル値:Twitter%20HQ 場所を検索するための任意の文字列を指定します。地理ベースの検索なので、国名、都市名、施設名など場所の名前を指定するとよいでしょう。指定内容はURLエンコードしてください。
ip
※オプション
サンプル値:74.125.19.104 IPアドレスを指定します。ユーザーのIPアドレスに基づいて位置情報を取得する場合に指定します。
accuracy
※オプション
サンプル値:3 or 5ft 取得する位置情報の精度を指定します。パラメーター lat long で指定した地点からの検索対象範囲の半径の距離を指定します。数値のみ指定した場合は単位がメートル扱いになります。フィート扱いにする場合は数値+ftとします。このパラメーターを指定しない場合は 0m として扱われます。
granularity
※オプション
サンプル値:city 取得する位置情報の粒度を指定します。粒度はpoi(Point Of Interest), neighborhood(近隣), city(都市), admin(管理者) or country(国)とな場所のタイプとなります。このパラメーターを指定しない場合は neighborhood(近隣) として扱われます。
contained_within
※オプション
サンプル値:247f43d441defc03 検索範囲を place_id で指定します。結果は place_id で指定したエリア内に限定されます。

例えば、「San Francisco, CA USA」を検索範囲にする場合は、place_id を 5a110d312052166f とします。

attribute:street_address
※オプション
サンプル値:795%20Folsom%20St 住所検索を行う場合にこのパラメーターを指定します。
max_results
※オプション
サンプル値:3 取得結果を最大何地点返すか指定します。これは返される結果の数が max_results と等しくなるのを保証するものではありません。
callback
※オプション
サンプル値:name このパラメーターを指定した場合、指定された名前のcallbackをJSONP形式で返します。
サンプルコード
POINT
以下のサンプルコードを実行するにはOAuth接続が必要です。こちらのページからOAuth接続の設定を行って下さい。

– サンプル Click Here ! –

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta name="robots" content="index">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Twitter API geo search つぶやき投稿で使用されている 位置 場所 一覧 検索</title>
</head>
<body>



<?php
#########################################
### 初期設定
//twitteroauth.phpをインクルードします。ファイルへのパスは環境に合わせて記述下さい。
require_once("./twitteroauth.php");

//Consumer keyの値をTwitterAPI開発者ページでご確認下さい。
$consumerKey = "***************";
//Consumer secretの値を格納
$consumerSecret = "***********************************";
//Access Tokenの値を格納
$accessToken = "***********************************";
//Access Token Secretの値を格納
$accessTokenSecret = "***********************************";

//OAuthオブジェクトを生成する
$twObj = new TwitterOAuth($consumerKey,$consumerSecret,$accessToken,$accessTokenSecret);
?>



<?php
#########################################
### ページ説明
?>

<h1>Twitter API geo search つぶやき投稿で使用されている 位置 場所 一覧 検索</h1>
<!-- 説明ページurl -->
<h3><a href="http://www.tryphp.net/2012/02/02/phpapptwitter-geo_search/">→説明はこちら</a></h3>
<hr/>



<?php
#########################################
### 取得したデータを展開
?>

<h2>取得したデータを展開</h2>
<div style="background-color:#f8f8f8;margin:20px; padding:20px; border:solid #cccccc 1px;">

<!-- // =========================== ここから =========================== -->

<?php
//API実行データ取得
//東京 'lat' => '35.6894875', 'long' => '139.6917064'
$vRequest = $twObj->OAuthRequest("http://api.twitter.com/1/geo/search.json","GET",array('lat' => '35.6894875', 'long' => '139.6917064'));

//Jsonデータをオブジェクトに変更
$oObj=json_decode($vRequest);

//オブジェクトを展開
if(isset($oObj->{'error'}) && $oObj->{'error'} != ''){
    echo "取得に失敗しました。<br/>\n";
    echo "パラメーターの指定を確認して下さい。<br/>\n";
    echo "エラーメッセージ:".$oObj->{'error'}."<br/>\n";
}else{


    echo "<h4>クエリタイプ</h4>\n";

    echo "・query type:(".$oObj->{'query'}->{'type'}.")<br/>\n";
    echo "・type:(".$oObj->{'query'}->{'params'}->{'coordinates'}->{'type'}.")<br/>\n";
    echo "・lat:(".$oObj->{'query'}->{'params'}->{'coordinates'}->{'coordinates'}[1].")<br/>\n";
    echo "・long:(".$oObj->{'query'}->{'params'}->{'coordinates'}->{'coordinates'}[0].")<br/>\n";
    echo "・url:(".$oObj->{'query'}->{'url'}.")<br/>\n";
    echo "<br/>\n";


    echo "<h4>クエリ結果</h4>\n";

    $iObjSize = sizeof($oObj->{'result'}->{'places'});
    for($i=0; $i<$iObjSize; $i++){

        echo "<b>No.{$i} places</b><br/>\n";

        echo "・<b>id</b>:(".$oObj->{'result'}->{'places'}[$i]->{'id'}.")<br/>\n";
        echo "・<b>country</b>:(".$oObj->{'result'}->{'places'}[$i]->{'country'}.")<br/>\n";
        echo "・<b>name</b>:(".$oObj->{'result'}->{'places'}[$i]->{'name'}.")<br/>\n";
        echo "・<b>full_name</b>:(".$oObj->{'result'}->{'places'}[$i]->{'full_name'}.")<br/>\n";
        echo "・<b>place_type</b>:(".$oObj->{'result'}->{'places'}[$i]->{'place_type'}.")<br/>\n";
        echo "・<b>country_code</b>:(".$oObj->{'result'}->{'places'}[$i]->{'country_code'}.")<br/>\n";
        echo "・<b>url</b>:(".$oObj->{'result'}->{'places'}[$i]->{'url'}.")<br/>\n";

        echo "・<b>bounding_box</b><br/>\n";
        echo " type:(".$oObj->{'result'}->{'places'}[$i]->{'bounding_box'}->{'type'}.")<br/>\n";
        $iObjSize2 = sizeof($oObj->{'result'}->{'places'}[$i]->{'bounding_box'}->{'coordinates'});
        $aBboxCrd = $oObj->{'result'}->{'places'}[$i]->{'bounding_box'}->{'coordinates'};
        for($ii=0; $ii<$iObjSize2; $ii++){
            foreach($aBboxCrd&#91;$ii&#93; as $value){
                foreach($value as $value2){
                    echo "   ".$value2;
                }//end foreach
            echo "<br/>\n";
            }//end foreach
        }//end for

        echo "・<b>contained_within</b><br/>\n";
        $iObjSize2 = sizeof($oObj->{'result'}->{'places'}[$i]->{'contained_within'});
        $aCntWith = $oObj->{'result'}->{'places'}[$i]->{'contained_within'};
        for($ii=0; $ii<$iObjSize2; $ii++){
            echo " country:(".$aCntWith&#91;$ii&#93;->{'country'}.")<br/>\n";
            echo " name:(".$aCntWith[$ii]->{'name'}.")<br/>\n";
            echo " full_name:(".$aCntWith[$ii]->{'full_name'}.")<br/>\n";
            echo " country_code:(".$aCntWith[$ii]->{'country_code'}.")<br/>\n";
            echo " url:(".$aCntWith[$ii]->{'url'}.")<br/>\n";

            echo "  bounding_box<br/>\n";
            echo "   type:(".$aCntWith[$ii]->{'bounding_box'}->{'type'}.")<br/>\n";
            $iObjSize3 = sizeof($aCntWith[$ii]->{'bounding_box'}->{'coordinates'});
            $aBboxCrd = $aCntWith[$ii]->{'bounding_box'}->{'coordinates'};
            for($iii=0; $iii<$iObjSize3; $iii++){
                foreach($aBboxCrd&#91;$iii&#93; as $value){
                    foreach($value as $value2){
                        echo "    ".$value2;
                    }//end foreach
                echo "<br/>\n";
                }//end foreach
            }//end for
        }//end for

        echo "------------------<br/>\n";
    }//end for

}//end else
?>

<!-- =========================== ここまで =========================== // -->
</div>
<hr/>



<?php
#########################################
### 取得したオブジェクトの内容
?>

<h2>取得したオブジェクトの内容</h2>
[PHP ruler="true" toolbar="true"]
<?php
var_dump($oObj);
?>
<\/pre>
<hr/>



</body>
</html>

– サンプル Click Here ! –


タグ(=記事関連ワード)

日付

投稿日:2012年2月2日
最終更新日:2012年07月17日

関連記事

このカテゴリの他のページ

この記事へのコメント

トラックバックurl

http://www.tryphp.net/phpapptwitter-geo_search/trackback/