将数据发送到Google地图上的InfoWindow

时间:2013-07-16 08:59:55

标签: android google-maps google-maps-markers infowindow

我想为 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吗?

3 个答案:

答案 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.getDataMarker.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);