我正在调用 API,然后将 JSON 数据添加到数组列表中,然后调用数组列表数据并将纬度和经度放置到 map 上,放置多个标记。我相信我的问题是从 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();
}
}
最佳答案
您必须在 map 同步后调用someMethod()
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
someMethod();
}
并在 for 循环内的 somemethod()
中以这种方式使用其余部分:
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
关于java - 使用 ArrayList 在 Google map 上添加多个标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56623755/