2017-01-27 16 views
-2

私はこれについての調査を尽くして2日間働いていることを誓います。私はJSONオブジェクトと組み込み配列を含むVolley Put Requestを使用しようとしています。JSONをMapbox APIのVolley Putリクエストにフォーマットする方法

私はMapboxのAPIからの例から働いている:https://www.mapbox.com/api-documentation/#insert-or-update-a-feature

私が送信するために必要なもの:

curl "https://api.mapbox.com/datasets/v1/therefore/lkjashdglkhasdkljsa/features/test123456?dfalkjhsfdlkjhdfs" \ 
 
    -X PUT \ 
 
    -H "Content-Type: application/json" \ 
 
    -d @file.geojson 
 

 
{ 
 
    "id": "test123456", 
 
    "type": "Feature", 
 
    "geometry": { 
 
    "type": "Polygon", 
 
    "coordinates": [ 
 
     [ 
 
     [ 100, 0 ], 
 
     [ 101, 0 ], 
 
     [ 101, 1 ], 
 
     [ 100, 1 ], 
 
     [ 100, 0 ] 
 
     ] 
 
    ] 
 
    }, 
 
    "properties": { 
 
    "prop0": "value0" 
 
    } 
 
}

私がこれまで取り組んできたコードは、新しいを投稿することができますデータセットをサーバーに追加することですが、私の意図は新しいポイント機能をマップに追加することです。ここに私の作成が...ある

これは、サーバー ます。public void postMethod(ビュービュー)に新しいデータセット{

final RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this); 

    StringRequest stringRequest = new StringRequest(Request.Method.PUT, postdatapointurl, 
      new com.android.volley.Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) { 

        try { 
         JSONObject jsonResponse = new JSONObject(response).getJSONObject("form"); 
         String site = jsonResponse.getString("site"), 
           network = jsonResponse.getString("network"); 
         System.out.println("Site: "+site+"\nNetwork: "+network); 
        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 

        textview.setText(response); 
        requestQueue.stop(); 
       } 
      }, new com.android.volley.Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 

      textview.setText("something went wrong"); 
      error.printStackTrace(); 
      requestQueue.stop(); 
     } 
    }) 

    { 
     @Override 
     protected Map<String, String> getParams() { 
      Map<String, String> params = new HashMap<String, String>(); 
      params.put("id","nate123456789"); 
      params.put("geometry",{"type","Polygon") // <-- obviously wrong. This is where the problem is. 
      return params; 
     } 

     @Override 
     public Map<String, String> getHeaders() throws AuthFailureError { 
      Map<String, String> headers = new HashMap<String, String>(); 
      headers.put("Content-Type", "application/application.json"); 
      //headers.put("", "value"); 
      return headers; 
     } 
    }; 
    Volley.newRequestQueue(this).add(stringRequest); 


} 

正しくフォーマットされたJSONを取得し、右のだろう我慢する設定を作成します//

とても助かりました。私は本当に私の脳を試してみました。ありがとう。

+0

明らかに、代わりにjsonrequestを使用する必要があります。StringRequest – Selvin

答えて

0

Mapbox Android ServicesライブラリのGeoJSONオブジェクトをサポートしています。これを使うと、プログラムFeatureオブジェクトを作成することができる(例えばFeature.fromGeometry(Geometry geometry))、または生geojson文字列から(サーバーの応答を解析するために):

Feature geo = Feature.fromJson(geojson); assertEquals(geo.getType(), "Feature"); assertEquals(geo.getGeometry().getType(), "Point");

残念ながら、我々はまだデータセットのAPIをサポートしていませんが、その実装をhttps://github.com/mapbox/mapbox-java/issues/101にトラッキングしています。

+0

ありがとうございました。私はチュートリアルを完了し、私のアプリケーションで地図を作成し、新しいデータセットをPOSTすることができ、マップ上のすべての機能をテキストウィンドウに入れることができますが、私のプロジェクトの目的は、マップボックス上のデータセットに機能を追加することですサーバー。これは現在あなたが言及している方法で可能ですか? –

関連する問題