0

我正在创建一个显示Parse查询结果的地图。我可以直接将信息传递给标记,例如标题或lat/long,但我希望包含一些额外的信息(不会显示),当用户单击标记时可以使用这些信息。 例如,当用户点击标记时,我想从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); 

当我尝试通过获取的参数提取的“另一面”这个数据,该用户ID总是跨为空...我定义的userid例如:

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

我甚至尝试硬编码的userid这样的字符串,它仍然回来为空,当我试图得到的参数:

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) 

当我使用调试器停止代码,看看这些值,预期所有数据集,我有值除每个项目用户名。任何人都可以帮助我指出正确的方向吗?我只是想传递一个与变量相关的值,并将其与地图上创建的每个标记绑定。谢谢!

+0

我想嵌入参考ID到标记信息窗口。当用户点击信息窗口时,它应该将参考ID传递给新的意图。我可以在一个片段中传递我想要的字符串,但我不希望用户真正看到这些信息 –

回答

0

您无法将数据添加到标记。 所以,如果你想要更多的数据添加到您的标记,你将不得不将其与标记的ID存储在外部变量(的getID())

如 -

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

,并把数据放到HashMap中

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

好的,如果我创建hashmap来存储这些数据,我将如何在“另一侧”提取这些数据,当我试图获取这些数据来查询额外的数据?我假设有某种extramarkerData.get(marker.getId())函数? –

+0

准确地检索您必须使用的数据: 'extramarkerData.get(marker.getId())function' – Gaurav

+0

非常感谢。我搜索了几个小时,只找到关于如何定制窗口的信息。这很好,谢谢! –

相关问题