0

我想为 InfoWindow 的 Snippet(标记的对话框)发送一些数据,但是MarkerOptions定义了用于设置窗口正文文本的方法.snippet(String)

现在我使用这个escamotage:

    map.addMarker( 
    new MarkerOptions()
        .title(title)
        .snippet(m.getID() + " " + m.getVel().toString() + " " + m.getTime() + " " + color));

[...]

   String[] s = marker.getSnippet().split(" ");
   id = s[0];           
   vel = s[1];
   time = s[2];
   color = s[3];

但不是一个很好的解决方案。

我可以在其他模式下发送数据吗?我可以重新定义和定制一个 MarkerOptions 吗?

4

3 回答 3

3

您可以使用 Gson Lib,并将您的 Object 转换为 json 并在片段中设置 json,在解析时您可以直接将该 json 转换为对象,这是最好的解决方案

于 2013-07-16T09:05:38.700 回答
1

我可以在其他模式下发送数据吗?

是的。通常的方法是使用

    private Map<Marker, YourModel> markerToModelMapping;

并在添加标记时,将其也放入此地图中。

然后在GoogleMap回调中:

    YourModel data = markerToModelMapping.get(marker_method_param);

您也可以尝试Android Maps Extensions,它添加了Marker.getDataMarker.setData方法,因此您可以Marker直接分配任何对象而无需使用Map.

我可以重新定义和定制一个 MarkerOptions 吗?

不。

于 2013-07-16T09:05:07.890 回答
0

作者的最终解决方案(摘自问题编辑):

将标记作为 JSON 发送:

String Json = new Gson().toJson(myMarkerInfo);
map.addMarker(new MarkerOptions().snippet(Json));

检索 JSON :

Gson gson = new GsonBuilder().create(); 
MarkerInfo m = gson.fromJson(marker.getSnippet(), MarkerInfo.class);
于 2015-11-03T09:33:33.237 回答