0

Facebookユーザーのデータを使用して、現在の位置の座標だけを取得したいシンプルなアプリを作成しようとしています。私はこれを始めるためにこのガイドに従っています: https ://developers.facebook.com/docs/getting-started/facebook-sdk-for-android/3.0/

唯一の違いは、私が置き換えた場所です

user.getName();

user.getLocation().getLatitude(); //it's always null and so throws exception.

次に、getCountry()やgetState()などの他のメソッドを試しました。値は常にnullです。

誰かがこれを修正し、これらのメソッドを使用して場所の値を取得する方法を知っていますか?ありがとう。

これが私のコード部分です:

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // start Facebook Login
    Session.openActiveSession(this, true, new Session.StatusCallback() {

     // callback when session changes state

     @Override
     public void call(Session session, SessionState state, Exception exception) {
     if (session.isOpened()) {
      // make request to the /me API
      Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {

       // callback after Graph API response with user object

       @Override
       public void onCompleted(GraphUser user, Response response) {
        if (user != null) {
         TextView txt = (TextView) findViewById(R.id.text);
         txt.setText("Latitude is: " + user.getLocation().getLatitude());
        }
       }
      });

     }
   }
 });
}

編集:FacebookのSDKに付属しているハックブックプロジェクトのサンプルでは、​​場所IDによって座標(緯度と経度)を取得できることがわかります。誰もがその方法を知っていますか?

4

3 に答える 3

3

getPropertyメソッドを使用する必要があります-都市と国を取得する例は-

user.getLocation().getProperty("name");

リンクを確認してください。-GraphUserGraphAPIで定義されているように、厳密に型指定されたユーザーの表現を提供します。このインターフェースはGraphObject.Factoryで使用することを目的としており、直接実装されていないことに注意してください。

このリンクにはいくつかの例があり、物事をより明確にします。

ここから引用します-この応答のデータの一部は、GraphUserインターフェイスのプロパティの強く型付けされたプロパティとしてアクセスできます-例:namebirthdaygetProperty()メソッドを使用し、目的のキーを選択することで、他のプロパティにアクセスできます(例:ロケール言語) 。このステップでは、ユーザーの名前、誕生日、言語、場所、およびロケールにアクセスする方法を示します。

于 2013-05-16T23:00:29.410 に答える
1

OK、私はついに答えが得られたと思います:IDから座標を取得するために、このクエリを使用しました:

http://graph.facebook.com/ID

次に、結果を解析して座標を取得します(より簡単な方法がある場合は修正してください)。IDを簡単に取得できる場所:

user.getLocation();

ちなみに、最初の試行では、返された値がnullである理由がまだわかりません。回避策の結果は思ったほど正確ではないかもしれませんが、誰かが何かを投稿したときにFacebookがそれほど正確な場所を登録しないことに気付きました。彼の壁に、しかしポストが由来する都市のちょうど座標。(繰り返しますが、間違っている場合は訂正してください)。

ありがとうございました。

于 2013-03-12T10:24:27.140 に答える
0

getLocation()メソッドは、ユーザーの現在の都市のみを返します。

于 2014-03-04T21:14:26.137 に答える