Добавление нескольких маркеров на Google Maps с ArrayList - PullRequest
0 голосов
/ 17 июня 2019

Я вызываю API, затем добавляю данные JSON в массив, затем вызываю данные массива и размещаю широту и долготу на карте, размещая несколько маркеров.Я считаю, что моей проблемой является получение строки из ArrayList, но я не уверен, как ее решить.

Я вызываю API из другого класса

private GoogleMap mMap;

ArrayList LatitudeList = new ArrayList();
ArrayList LongitudeList = new ArrayList();

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

    someMethod();


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


    //Log.d("TEST", "BBB");
    String LatMarkers = LatitudeList.toString();
    String LongMarkers = LongitudeList.toString();

    //Log.d("TEST", "AAA");
        double latitude = Double.parseDouble(LatMarkers);
        double longitude = Double.parseDouble(LongMarkers);
        LatLng location = new LatLng(latitude, longitude);

        //Log.d("TEST", "CCC");
        mMap.addMarker(new MarkerOptions().position(location).title("Camera Location"));
        mMap.moveCamera(CameraUpdateFactory.newLatLng(location));

    //Log.d("TEST", "DDD");

}

OkHttpClient client = new OkHttpClient();

void someMethod(){
    try {
        String jsonData = new TAXIAPI(client).execute().get();

        JSONObject object = new JSONObject(jsonData);
        JSONArray RunningArray = object.getJSONArray("value");

        for (int i = 0; i < RunningArray.length(); ++i) {

            JSONObject objectInner = new JSONObject(RunningArray.getString(i));
            String Latitude = objectInner.getString("Latitude");
            String Longitude = objectInner.getString("Longitude");


            LatitudeList.add(Latitude);
            LongitudeList.add(Longitude);

            Log.d("APIActivity", "  " + Latitude + "  " + Longitude );
        }
    } catch (Exception e)
    {
        e.printStackTrace();

    }
}

1 Ответ

1 голос
/ 17 июня 2019

Вы должны позвонить своему someMethod() после синхронизации карты

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

и использовать остаток таким образом в вашем somemethod() внутри цикла for:

String Latitude = objectInner.getString("Latitude");
String Longitude = objectInner.getString("Longitude");

double lat =Double.parseDouble(Latidute);
double lng =Double.parseDouble(Longitude);


LatLng location = new LatLng(lat, lng);
mMap.addMarker(new MarkerOptions().position(location).title("Camera Location"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(location));//this will make camera focus on the last marker location
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...