bur*_*ius 2 java android google-maps
我有一个API返回一些JSON数据.使用GSON库我将JSON对象转换为Java对象.
我有一个由对象填充的列表,每个对象都包含特定信息(id,name,long,lat,status,street等).我将标记添加到地图中并且工作正常......但是当用户点击其中一个标记(每个标记应显示不同的信息)时,我想显示其他信息,即状态,街道和其他信息.
所以,我需要将一个对象(或数据)传递给另一个活动,该活动将显示特定标记的完整信息.你有什么建议?
您可以创建一个HashMap用于管理标记和相关信息之间的映射.
HashMap<Marker, Data> hashMap = new HashMap<Marker, Data>();
Run Code Online (Sandbox Code Playgroud)
注意:Data类是否包括您的所有信息(ID,名称,长,纬度,状态,街道等).
在地图上添加标记时,还需要将它们添加到地图中(包含相关信息).例如,如果您将数据放在列表中:
for(Data data : list){
Marker marker = mMap.addMarker(new MarkerOptions()
.position(new LatLng(data.lat, data.long));
hashMap.put(marker, data);
}
Run Code Online (Sandbox Code Playgroud)
然后,假设您想要使用与标记关联的信息,当您单击信息窗口时,您可以执行以下操作:
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);
}
}
});
Run Code Online (Sandbox Code Playgroud)
注意:数据应该实现Parcelable,或者你可以只传递id,如果从json检索的信息是持久的,例如在数据库中,那么在Activity收到id之后,它可以从数据库中获取所有其他信息.
| 归档时间: |
|
| 查看次数: |
1372 次 |
| 最近记录: |