我可以在地图标记中包含哪些参数

时间:2015-10-13 05:51:50

标签: android google-maps google-maps-api-3 arguments google-maps-markers

我正在创建一个显示Parse查询结果的地图。我可以直接将信息传递给标记,例如标题或纬度/经度,但我想在用户点击标记时包含一些我可以使用的附加信息(不显示)。 例如,当用户点击标记时,我想从Parse查询中找到用户的objectId(这只是一个字符串)。 我已经在标记onClickListener中尝试了以下代码,将字符串作为参数:

destPosition = marker.getPosition();
destLat = destPosition.latitude;
destLong = destPosition.longitude;
MarkerDialogFragment markerDialogFragment = new MarkerDialogFragment();
Bundle args = new Bundle();
args.putString("id", marker.getId());
args.putString("userId", userId);
args.putString("title", marker.getTitle());
args.putDouble("latitude", destLat);
args.putDouble("longitude", destLong);
markerDialogFragment.setArguments(args);

当我尝试在"另一方面提取这些数据时#34;通过获取参数,userId始终为null ...我已经定义了userId:

 final String userId = parseUsers.get(i).getObjectId();

我甚至尝试在userId中对字符串进行硬编码,当我尝试获取参数时它仍然返回null:

 final String userId = "test userId";

以下是标记onCreateDialog方法的get参数代码:

builder = new AlertDialog.Builder(getActivity());
    final String markerId = getArguments().getString("id");
    final String userId = getArguments().getString("userId");
    final String title = getArguments().getString("title");
    final double destLat = getArguments().getDouble("latitude");
    final double destLong = getArguments().getDouble("longitude");        
    builder.setTitle(title)

当我使用调试器停止代码查看值时,所有数据都按预期设置,除了userId,我有每个项的值。谁能帮助我指出正确的方向?我只想传递一个与变量相关的值,并将其与地图上创建的每个标记绑定。谢谢!

1 个答案:

答案 0 :(得分:0)

您无法再向标记添加数据。 因此,如果您想向标记添加更多数据,则必须将其存储在带有标记ID(getID())

的外部变量中

例如 -

HashMap<int,Object> extramarkerData = new HashMap<int,Object>();

并将数据放入hashmap

extramarkerData.put(marker.getId(),"additional data");