1

Twitterは、任意の場所のプレイスオブジェクトを取得するためのAPIを提供します。https://dev.twitter.com/docs/api/1/get/geo/searchのTwitterAPIドキュメントによると:

「緯度と経度のペア、IPアドレス、または名前を指定すると、このリクエストは、ステータスを更新するときにplace_idとして使用できるすべての有効な場所のリストを返します。」

APIはplaceオブジェクトを返します。その場所の境界座標を取得することに特に興味があります。これは、場所オブジェクトに含まれるポイントまたはポリゴンにすることができます。次に、これを使用して、ユーザーの場所がニューヨークなどの他の場所にあるかどうかを確認します。

これで、すべてのユーザーがTwitterAPIを使用して自分のプロファイルを取得できます。APIは、基本的に文字列であるユーザーの場所を含むjsonオブジェクトを返します(例: "San Francisco、CA")。この場所を上記のgeosearchapiに渡して、ユーザーの場所を定義するポリゴンの座標を取得できます。

私はtwitter4jライブラリを使用して同じことをしています。メソッド'searchPlaces()'は、Twitterの/ geo / search APIに対応し、GeoQueryオブジェクトを引数として取ります。ただし、GeoQueryオブジェクトには、GeoLocationを取得するコンストラクターが2つだけあります。つまり、緯度、経度情報、またはIPアドレスです。

https://github.com/twitter/twitter4j/blob/master/twitter4j-core/src/main/java/twitter4j/GeoQuery.java

GET geo / search APIに見られるように、すべてのパラメーターはすべてオプションです。ただし、GeoQueryクラスでコンストラクターを2つだけ提供すると、1つは緯度と経度の値またはipaddressのいずれかを提供するように強制されます。代わりに私が持っているのは、ユーザーのプロファイルからのユーザーの場所の文字列です。

twitter4jとtwitterAPIの間にこのような違いがある理由を誰かに教えてもらえますか?また、Twitterユーザーがニューヨーク出身かどうかを確認する別の方法を誰かが提案できますか。

PS:lat、longを取得するためにユーザーの場所をジオコーディングしようとすると、GeoQueryオブジェクトも必要になります。これもlat、longが必要であり、これを行う方法も理解できないようです。

前もって感謝します。

4

1 に答える 1

1

私もこれに遭遇しました。回避策は次のとおりです。

GeoQuery geo = new GeoQuery((String)null);
geo.setQuery("New York")
于 2014-11-11T13:39:32.993 に答える