2016-04-19 10 views
-1

ここに:Async and ListView Android非同期とGoogleマップ

私はAsyncとListviewについて尋ねました。今、非同期とマップに問題があります。 Asyncを返すJSONでマーカーを設定したい。残念ながら、私は、デフォルト値とそれを望まないものを設定します。 Googleが準備マップ後

public class MarkerInfo extends FragmentActivity implements OnMapReadyCallback { 
private GoogleMap mMap; 
private LatLng sydney; 
private String longituide; 
private String latitude; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_marker_info); 
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 
      .findFragmentById(R.id.map); 
    mapFragment.getMapAsync(this); 

    Bundle bundle_list = getIntent().getExtras(); 
    final String name_item = bundle_list.getString("name"); 

    JSONObject toSend = new JSONObject(); 
    try { 
     toSend.put("action", "getAllMarkers"); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 

    JSONTransmitter asyncTask = (JSONTransmitter) new JSONTransmitter(new JSONTransmitter.AsyncResponse() { 
     @Override 
     public void processFinish(String output) { 
      try { 
       JSONArray pages = new JSONArray(output); 
       for (int i = 0; i < pages.length(); ++i) { 
        JSONObject rec = pages.getJSONObject(i); 
        String name_task = rec.getString("nazwa"); 
        latitude = rec.getString("latitude"); 
        longituide = rec.getString("longitude"); 
        mMap.addMarker(new MarkerOptions().position(new LatLng(Double.parseDouble(longituide), Double.parseDouble(latitude)))); 
       } 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } 

    }).execute(toSend); 
} 

public void onMapReady(GoogleMap googleMap) { 
    mMap = googleMap; 
} 

}

答えて

0

は、あなたの非同期マップに依存する操作(マーカーを追加すること)を実行することができます。

JSONTransmitter asyncTask; 
GoogleMap mMap; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    ... 

    mapFragment.getMapAsync(this); 

    asyncTask = (JSONTransmitter) new JSONTransmitter(new JSONTransmitter.AsyncResponse() { 
     @Override 
     public void processFinish(String output) { 
      try { 
       JSONArray pages = new JSONArray(output); 
       for (int i = 0; i < pages.length(); ++i) { 
        JSONObject rec = pages.getJSONObject(i); 
        String name_task = rec.getString("nazwa"); 
        latitude = rec.getString("latitude"); 
        longituide = rec.getString("longitude"); 
        mMap.addMarker(new MarkerOptions().position(
         new LatLng(Double.parseDouble(longituide), Double.parseDouble(latitude)))); 
       } 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 
} 

public void onMapReady(GoogleMap googleMap) { 
    mMap = googleMap; 

    JSONObject toSend = new JSONObject(); 

    try { 
     toSend.put("action", "getAllMarkers"); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 

    asyncTask.execute(toSend); 
} 
関連する問題