Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private Runnable batchAddMarkersRunnable = new Runnable() {
- private static final int ADD_IN_BATCH = 1;
- private static final int DELAY = 100;
- private LatLng previousCameraPosition;
- @Override
- public void run() {
- if (mCount == 0) {
- return;
- }
- sortPositionsIfNeeded();
- for (int i = 0; i < ADD_IN_BATCH && mCount > 0; i++) {
- mCount--;
- MapViewHolder item = arrayCameras[mCount];
- arrayCameras[mCount] = null;
- if(item != null) {
- if(!isMarkerOnArray(mMap.getMarkers(), item.camera)) {
- mMap.addMarker(getMarkerForItem(item.camera));
- }
- }
- }
- handler.postDelayed(this, DELAY);
- }
- private void sortPositionsIfNeeded() {
- final LatLng cameraPosition = mMap.getCameraPosition().target;
- if (previousCameraPosition == null || LatLngUtils.distanceSquared(previousCameraPosition, cameraPosition) > 400.0) {
- previousCameraPosition = cameraPosition;
- for (int i = 0; i < mCount; i++) {
- MapViewHolder p = arrayCameras[i];
- p.distance = LatLngUtils.distanceSquared(cameraPosition, new LatLng(p.camera.getLatitude(), p.camera.getLongitude()));
- }
- Arrays.sort(arrayCameras, 0, mCount, new Comparator<MapViewHolder>() {
- public int compare(MapViewHolder lhs, MapViewHolder rhs) {
- return Double.compare(rhs.distance, lhs.distance);
- }
- });
- }
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment