我想为 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吗?
答案 0 :(得分:3)
您可以使用Gson Lib,并将Object转换为json并将json设置为片段,并且在解析时可以将json直接转换为object,这是最佳解决方案
答案 1 :(得分:1)
我可以在其他模式下发送数据吗?
是。通常的方法是使用
private Map<Marker, YourModel> markerToModelMapping;
并在添加标记时,也将其放入此地图中。
稍后在GoogleMap
回调:
YourModel data = markerToModelMapping.get(marker_method_param);
您还可以尝试添加Marker.getData
和Marker.setData
方法的Android Maps Extensions,这样您就可以直接将任何对象分配到Marker
,而无需使用Map
。< / p>
我可以重新定义和成本化MarkerOptions吗?
没有
答案 2 :(得分: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);