【问题标题】:Add unique names for map markers inside a for loop Android在 for 循环 Android 中为地图标记添加唯一名称
【发布时间】:2017-04-30 04:39:16
【问题描述】:

我需要创建从数据库加载的多个地图标记。当我点击它们时,我需要删除它们。所以我认为我需要一个唯一的名称(或 place_id)为每个标记来做到这一点。(如果有人有更好的想法建议我)。但是如何在循环中给出唯一的标记名称。

JSONArray jsonarray = jsonObject.getJSONArray("server_response");

for (int x = 0; x < jsonarray.length(); x++) {

 JSONObject jsonobject = jsonarray.getJSONObject(x);

 places_id = jsonobject.getInt("places_id");

 status = jsonobject.getInt("status");

 category = jsonobject.getString("category");

 date = jsonobject.getString("date");

 time = jsonobject.getString("time");


 Marker uniquename = mMap.addMarker(new MarkerOptions().position(new LatLng(lat,long)).title("marker")));

}

【问题讨论】:

    标签: android google-maps loops unique marker


    【解决方案1】:

    如果您没有命名限制,那么将标记名称与迭代器变量连接起来怎么样?即:

    for (int x = 0; x < jsonarray.length(); x++) {
     Marker uniquename = mMap.addMarker(new MarkerOptions().position(new LatLng(lat,long)).title("Marker " + String.valueOf(x))));
    }
    

    【讨论】:

    • 感谢您的回答。但是我可以使用一些东西来 uniquename 而不是在标题中使用 x 变量。我不喜欢在标题中显示任何数字。
    • 你能定义你希望显示的标题吗?
    • 我只需要在标题上显示文本而不是数字。如果有办法只显示隐藏 String.valueOf(x) 的标题中的文本,那也可以。
    • 如果您没有定义向用户显示什么的标准,可能有两种方法:1)如果您可以控制返回数据的数据库/数据源,也许您可​​以在那里定义一个name属性个人更喜欢这个 2)你可以任意定义一个方法,根据每个对象的唯一属性值返回一个唯一字符串;即: if ( object.id == xxx && category.equals("xxx") ) 设置名称 String value = "yyy" ,然后构造一个映射,其值代表您的 json 数组对象,键是此方法的输出.
    • ...这样您就可以在基于您定义的标准的唯一名称与您的 json 数组对象之间进行映射。如果您需要进一步澄清,请告诉我,如果您找到帮助的答案,请将其标记为已接受 :) 祝您好运!
    猜你喜欢
    • 2020-02-12
    • 2023-03-08
    • 2018-09-10
    • 2013-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-22
    • 2018-08-13
    相关资源
    最近更新 更多