【问题标题】:What arguments can I include with a map marker我可以在地图标记中包含哪些参数
【发布时间】:2015-10-13 05:51:50
【问题描述】:

我正在创建一个显示 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);

当我尝试通过获取参数在“另一边”提取此数据时,userId 总是显示为 null...我已经将 userId 定义为:

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

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

 final String userId = "test userId";

这里是标记 onCreateDialog 方法的获取参数代码:

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 之外的每个项目都有值。谁能帮我指出正确的方向?我只是想传递一个与变量关联的值,并将其绑定到地图上创建的每个标记。谢谢!

【问题讨论】:

  • 我正在尝试将参考 ID 嵌入到标记信息窗口。当用户点击信息窗口时,它应该将参考 ID 传递给新的意图。我可以在 sn-p 中传递我想要的字符串,但我不希望用户实际看到该信息

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


【解决方案1】:

您不能再向标记添加数据。 因此,如果您想向标记添加更多数据,则必须将其存储在具有标记 ID (getID()) 的外部变量中

例如-

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

将数据放入hashmap

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

【讨论】:

  • 好的,所以如果我创建哈希图来存储这些数据,当我试图获取这些数据以查询其他数据时,我将如何在“另一端”提取这些数据?我假设有某种 extramarkerData.get(marker.getId()) 函数?
  • 正是为了检索您必须使用的数据:extramarkerData.get(marker.getId()) function
  • 非常感谢。我搜索了几个小时,只找到有关如何自定义窗口的信息。这很好用,谢谢!
  • 好的,这在同一个类中工作......有没有办法将此数据存储在一个类中的哈希图中,例如 MapActivity,然后在对话框片段或任何其他片段中提取数据/活动?
  • 是的,将 Hashmap 声明为 Application 类,请参阅 stackoverflow.com/questions/18002227/… 和 IntelliJ Amiya 的回答,了解如何创建扩展应用程序类也进入 manifest.xml
猜你喜欢
  • 2013-12-06
  • 2021-08-28
  • 2021-10-11
  • 2011-03-23
  • 2010-12-10
  • 2010-10-25
  • 2011-04-09
  • 2012-07-04
  • 2017-08-19
相关资源
最近更新 更多