【问题标题】:Unable to set Multiple markers dynamically on google maps android无法在谷歌地图android上动态设置多个标记
【发布时间】:2019-11-08 07:53:39
【问题描述】:

我正在使用推送器从另一台设备接收位置。在我的地图中,我想从推送器数据中动态显示多个标记。

我尝试了多种解决方案;但没有一个有助于实现我所需要的, tried this post

这是我的代码

JSONObject jsonObject1 = new JSONObject(DataFromPusher);
JSONArray jsonArray = jsonObject1.getJSONArray("Userlocation");
    for (int i =0; i < jsonArray.length(); i++)
    {
        jsonObject = jsonArray.getJSONObject(i);
        lat = jsonObject.getString("Userlatitude");
        lng = jsonObject.getString("Userlongitude");
        cor = new LatLng(Double.parseDouble(lat),Double.parseDouble(lng));
        runOnUiThread(new Runnable() {
        @Override
        public void run() {
        if (marker != null){
        marker.remove();
        }
        marker = mMap.addMarker(new MarkerOptions().position(cor).title(lat+ "  " +lng)
        .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN)));
    }
});
}

推送响应:

{
    "Userlocation": [
        {
        "Userlatitude": "12.9325340",
        "Userlongitude": "77.5450430"
        },
        {
        "Userlatitude": "12.9325350",
        "Userlongitude": "77.5450440"
        }
    ]
}

【问题讨论】:

  • 这两点相差 0.1553 米(或 6 英寸),因此很可能有 2 个标记 - 一个在另一个之上。但更重要的是,您的代码实际上删除了前一个标记 - 所以是的,您只会看到一个标记。
  • @Andy 是的,我也是这么想的,它可能会重叠,但我不确定。删除标记的原因是。我只想显示从推送数据接收到的当前位置。

标签: android json google-maps-markers


【解决方案1】:

试试这个

            for (int i = 0; i < jsonArray.length(); i++) {
                JSONObject jsonObject;
                try {
                    jsonObject = jsonArray.getJSONObject(i);

                    String name = jsonObject.getString("name");
                    String lat = jsonObject.getString("lat");
                    String lng = jsonObject.getString("lng");

                    final MarkerOptions markerOptions = new MarkerOptions();
                    markerOptions.position(new LatLng(Double.parseDouble(lat), Double.parseDouble(lng)));
                    markerOptions.snippet(name);
                    Marker marker = googleMapWhole.addMarker(markerOptions);
                    markerList.add(marker);

                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

【讨论】:

    猜你喜欢
    • 2016-03-16
    • 2020-04-22
    • 1970-01-01
    • 2013-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    • 2023-03-13
    相关资源
    最近更新 更多