当前位置: 首页 > 知识库问答 >
问题:

使用ArrayList在Google地图上添加多个标记

曹均
2023-03-14

我调用API,然后将JSON数据添加到arraylist中,然后调用arraylist数据,并将纬度和经度放置在地图上,放置多个标记。我相信我的问题是从ArrayList获取字符串,但我不知道如何解决它。

我正在从另一个类调用API

私有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个答案

轩辕远
2023-03-14

在映射同步后,您必须调用您的某个方法()

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

并在您的somethod()内部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
 类似资料:
  • 在我的应用程序中,我使用的是谷歌地图,首先我是通过标记显示用户当前的位置,并通过一个透明的圆圈显示其准确性,现在当我想添加另一个标记到代表我以前的位置的同一点时,相同的代码对我不起作用,请有人帮我找出代码的错误,我只是想在一个地图视图中添加多个标记 下面是我用来显示两个标记的代码:- 通过使用MapOverlay类,我可以在地图上放置一个显示用户当前位置的pin,但当我使用MapOverlay1显

  • 我在视图中使用mapbox,需要从JSON添加多个标记 这是我的JSON 下面是我如何运行脚本添加地图到视图 但是我想知道,我如何需要添加标记到map(对于json中的每个元素,我需要获得lat和lon)来映射。因为医生说我需要这样的Json var Geojson={type:'FeatureCollection',特性:[{type:'Feature',几何:{type:'Point',坐标:

  • 我有一个从Google maps下载静态图像的应用程序,将标记放置在我想要的位置(通过将参数传入Google static maps URL来放置)。但是,我也需要能够点击标记。我想我可以将x和y坐标转换为lon/lat,然后用这种方法计算出哪个标记被点击了,但我发现这并不容易。 我知道地图的尺寸(以像素为单位),缩放级别,以及地图的中心点(以像素和lon/lat为单位),所以我跟踪了这篇博文。不

  • 问题内容: 我不想要做的是在地图上显示从某些移动设备上选择的位置。有关位置的数据在那里。 我这里需要根据从服务器接收到的数据在地图上添加标记。 假设我已经将位置数据 ({Lat,Lang}) 设置为 状态标记, 然后如何添加它以显示在地图中。 我的地图代码如下! 使用过的npm包:-谷歌地图反应 问题答案: 您可以尝试: 如果有错误,也请在此处显示,我们稍后可以修复 =========== 标记点

  • 我正在寻找的是一种避免必须“手动”找到。有没有办法自动让地图以三个坐标为中心?

  • 问题内容: 我想在Google Maps android上显示带有多个标记的位置,问题是当我运行我的应用程序时,它只显示一个位置/标记,这是我的代码: 我不知道我的错在哪里,希望有人能帮助我解决我的问题,非常感谢你 问题答案: 用这个: 或者,您也可以使用以下命令: 其中 纬度 和 经度 是存储在数组列表中的具有不同名称的字符串.....