【问题标题】:How to pass an object to Google Maps Android API V2 Marker?如何将对象传递给 Google Maps Android API V2 Marker?
【发布时间】:2017-08-14 18:01:13
【问题描述】:

我有一个 API 女巫返回一些 JSON 数据。使用 GSON 库我将 JSON 对象转换为 Java 对象。

我有一个由对象填充的列表,每个对象都包含特定信息(id、name、long、lat、status、street 等)。 我在地图上添加了标记,它工作正常......但是当用户单击markers 之一时,我想显示其他信息,即状态、街道和其他信息(每个标记应显示不同的信息)。

所以,我需要将一个对象(或数据)传递给另一个活动,该活动将显示特定标记的全部信息。你有什么建议?

【问题讨论】:

    标签: java android google-maps


    【解决方案1】:

    您可以创建一个HashMap 来管理标记和相关信息之间的映射。

    HashMap<Marker, Data> hashMap = new HashMap<Marker, Data>();
    

    注意Data 是包含您所有信息(id、姓名、经度、纬度、状态、街道等)的类。

    当您在地图上添加标记时,您还需要将它们添加到地图中(带有相关信息)。例如,如果您将数据放在列表中:

    for(Data data : list){
        Marker marker = mMap.addMarker(new MarkerOptions()
                                .position(new LatLng(data.lat, data.long));
        hashMap.put(marker, data);  
    }
    

    然后,假设您要使用与标记关联的信息,当您单击信息窗口时,您可以执行以下操作:

    mMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
                @Override
                public void onInfoWindowClick(Marker marker) {
                    Data data = hashMap.get(marker);
                    if(data!=null){
                        Intent intent = new Intent(mContext, YourActivity.class);
                        intent.putExtra(YourActivity.EXTRA_MESSAGE, data);
                        mContext.startActivity(intent);
                    }
                }
            });
    

    注意:数据应该实现Parcelable,或者你可以只传递id,如果从json检索到的信息是持久化的,例如在数据库中,那么在Activity收到id之后,它可以从数据库中获取所有其他信息。

    【讨论】:

    • 优秀的解决方案!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-11
    • 1970-01-01
    • 2013-01-24
    • 1970-01-01
    • 2013-03-24
    • 2023-04-02
    • 1970-01-01
    相关资源
    最近更新 更多