java - 使用 ArrayList 在 Google map 上添加多个标记

标签 java android arrays google-maps arraylist

我正在调用 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/

相关文章:

android - phonegap平台添加android

Android Studio 0.2.9 无法创建新项目

python - Python 中数组的余弦

java - 如何创建 Comparable 接口(interface)的对象

java - 正确使用java Commons BeanUtils?

android - 选择后如何在抽屉导航中使文本加粗?

javascript - C++ 中有类似 JS Array.prototype.map 的函数吗?

java - 将字符串拆分 2 次,但拆分不同 ";"和 "."

java - SWT GridLayout 自动列计数

java - SQLite JDBC驱动程序错误: getarray not implemented