2016-04-19 8 views
-1

Hier: Async and ListView AndroidAsync und Google Maps

Ich fragte nach Async und Listview. Jetzt habe ich ein Problem mit Async und Maps. Ich möchte eine Markierung mit JSON setzen, die Async zurückgibt. Leider setze ich die Standardwerte und diejenigen, die nicht wollen. Sie können

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; 
} 

}

Antwort

0

ausführen Ihre Async-Map abhängigen Betrieb (Hinzufügen von Markern), nachdem Google Map bereit helfen.

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); 
}