Android工作室;将 .title 和 .snippet 信息添加到 ArrayList <LatLng>

Android studio; add .title and .snippet info to ArrayList <LatLng>

所以我想通过 Arraylist 显示各种经纬度位置以作为标记显示在我的地图上,并显示它们的名称 + 自定义信息(在这个例子中我只显示两个位置):

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {

private GoogleMap mMap;
ArrayList <LatLng> arrayList=new ArrayList<LatLng>();
LatLng basketball = new LatLng(50.375199, 5.883950);
LatLng football = new LatLng(50.370330, 5.901570);

添加他们:

    arrayList.add(basketball);
    arrayList.add(football);

并将它们显示为标记:

public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;
    for (int i=0;i<arrayList.size();i++) {
        mMap.addMarker(new MarkerOptions().position(arrayList.get(i)).title("Basketball Court").snippet("It's a sunny square"));
        mMap.animateCamera(CameraUpdateFactory.zoomTo(15.0f));
        mMap.moveCamera(CameraUpdateFactory.newLatLng(arrayList.get(i))); }

虽然这可行,但问题显然是我所有的标记都具有相同的标题和 .snippet 信息。

我的问题是:如何将信息添加到我的 arrayList 中的每个位置,并通过 .title 和 .snippet 在每个标记上显示它。

我真的很期待一些答案,但似乎找不到任何答案。提前致谢:)

我想您需要创建自定义包装器 class。像

    class MyModel{
         LatLng latLng;
         String title;
         String snippet;
    }

然后使用 ArrayList<MyModel> list 并根据列表中的位置填充标题和摘要。

所以我找到了一个方法:

@Override
public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;
    mMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener()
    {

        @Override
        public void onInfoWindowClick(Marker arg0) {
        }

    });
    LatLng basketb = new LatLng(52.275000, 4.28000);
    LatLng footb = new LatLng(52.575441, 4.514373);
    // etc. etc. etc.


    mMap.addMarker(new MarkerOptions()
            .position(basketb)
            .title("Basketball Court")
            .snippet("Its a sunny place."));
    mMap.addMarker(new MarkerOptions()
            .position(footb)
            .title("Football Court")
            .snippet("It's a crowdy place."));
    // etc. etc. etc.

    mMap.moveCamera(CameraUpdateFactory.newLatLng(basketb));
    mMap.moveCamera(CameraUpdateFactory.newLatLng(footb));