当用户导航地图时,应用会获得新的位置供他查看。但是地图并没有使用新标记刷新。
收到带有地点的JSON后,此方法将它们放在地图上。
private void setMarkers(JSONObject response) {
mClusterManager.clearItems();
try {
JSONArray venues = response.getJSONArray("venues");
for (int i = 0; i < venues.length(); i++) {
Venue venue = new Gson().fromJson(venues.getJSONObject(i).toString(), Venue.class);
MarkerItem marker = new MarkerItem(venue.getLat(), venue.getLng(), venue, R.drawable.pin_quente);
mClusterManager.addItem(marker);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
第一个请求让他们好,但第二个请求什么也没做。
答案 0 :(得分:13)
使用:
mClusterManager.cluster();
添加标记后。
private void setMarkers(JSONObject response) {
mClusterManager.clearItems();
try {
JSONArray venues = response.getJSONArray("venues");
for (int i = 0; i < venues.length(); i++) {
Venue venue = new Gson().fromJson(venues.getJSONObject(i).toString(), Venue.class);
MarkerItem marker = new MarkerItem(venue.getLat(), venue.getLng(), venue, R.drawable.pin_quente);
mClusterManager.addItem(marker);
}
mClusterManager.cluster();
} catch (JSONException e) {
e.printStackTrace();
}
}
答案 1 :(得分:0)
我用这个解决方案解决了我的问题。 它不太优雅,但XYZ Communiccacion对我不起作用
private void setMarkers(JSONObject response){
mClusterManager.clearItems();
**mClusterManager.cluster();**
try {
JSONArray venues = response.getJSONArray("venues");
for (int i = 0; i < venues.length(); i++) {
Venue venue = new Gson().fromJson(venues.getJSONObject(i).toString(), Venue.class);
MarkerItem marker = new MarkerItem(venue.getLat(), venue.getLng(), venue, R.drawable.pin_quente);
mClusterManager.addItem(marker);
}
} catch (JSONException e) {
e.printStackTrace();
}
**new Handler().postDelayed(new Runnable() {
@Override
public void run() {
mClusterManager.cluster();
}
}, 100);**
}