Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在google maps android上动态设置多个标记_Android_Json_Google Maps Markers - Fatal编程技术网

无法在google maps android上动态设置多个标记

无法在google maps android上动态设置多个标记,android,json,google-maps-markers,Android,Json,Google Maps Markers,我使用推送器从另一个设备到接收器位置。在我的地图中,我希望动态显示来自推送器数据的多个标记 我尝试了多种解决方案;但是没有人帮我实现我所需要的, 这是我的密码 JSONObject jsonObject1 = new JSONObject(DataFromPusher); JSONArray jsonArray = jsonObject1.getJSONArray("Userlocation"); for (int i =0; i < jsonArray.length(); i+

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

我尝试了多种解决方案;但是没有人帮我实现我所需要的,

这是我的密码

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)));
    }
});
}
试试这个

            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();
                }
            }
        }
    }
}
for(int i=0;i
这两个点相差0.1553米(或6英寸),因此很可能有两个标记-一个在另一个上。但更重要的是,您的代码实际上删除了以前的标记-因此,是的,您将只看到一个标记。@Andy是的,我也这么认为,它可能重叠,但我不确定。删除标记背后的原因是。我只想显示从推送器数据接收到的当前位置。
            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();
                }
            }
        }
    }
}