Yes, you can! And here's how ...
// mMap is an instance of GoogleMap that has already been initialized by else, where
mMap.setOnCameraChangeListener(getCameraChangeListener()); getCameraChangeListener() public OnCameraChangeListener getCameraChangeListener() { return new OnCameraChangeListener() { @Override public void onCameraChange(CameraPosition position) { addItemsToMap(this.items); } }; }
// Your Item class will need at least a unique identifier, latitude and longitude.
private void addItemsToMap(List<Item> items) { if(this.mMap != null) { LatLngBounds bounds = this.mMap.getProjection().getVisibleRegion().latLngBounds; for(Item item : items) { if(bounds.contains(new LatLng(item.getLatitude(), item.getLongitude())) { if(!courseMarkers.containsKey(item.getId())) { this.courseMarkers.put(item.getId(), this.mMap.addMarker(getMarkerForItem(item))); } } else { if(courseMarkers.containsKey(item.getId())) { courseMarkers.get(item.getId()).remove(); courseMarkers.remove(item.getId()); } } } } }
Rachel gallen
source share