added doc

This commit is contained in:
Philipp Wo 2019-05-18 09:24:22 +02:00
parent 4ff5b18998
commit 92bcb8473c
5 changed files with 53 additions and 11 deletions

View File

@ -89,7 +89,6 @@
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/apk_list" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/build-info" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/builds" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundle_manifest" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/check_manifest_result" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/compatible_screen_manifest" />
@ -97,12 +96,10 @@
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-runtime-classes" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-verifier" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-apk" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant_app_manifest" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant_run_app_info_output_file" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant_run_main_apk_resources" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant_run_merged_manifests" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant_run_split_apk_resources" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/javac" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifest-checker" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged_assets" />
@ -177,6 +174,7 @@
<orderEntry type="library" name="Gradle: com.android.support:viewpager:28.0.0@aar" level="project" />
<orderEntry type="library" name="Gradle: android.arch.persistence.room:common:1.1.1@jar" level="project" />
<orderEntry type="library" name="Gradle: com.google.android.gms:play-services-basement:16.0.1@aar" level="project" />
<orderEntry type="library" name="Gradle: com.google.maps.android:android-maps-utils:0.5@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-integration:1.3@jar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-library:1.3@jar" level="project" />
<orderEntry type="library" name="Gradle: android.arch.lifecycle:common:1.1.1@jar" level="project" />

View File

@ -30,6 +30,7 @@ dependencies {
implementation 'com.android.support:design:28.0.0'
implementation 'com.android.support:support-v4:28.0.0'
implementation 'com.google.android.gms:play-services-maps:16.1.0'
implementation 'com.google.maps.android:android-maps-utils:0.5+'
implementation 'android.arch.persistence.room:runtime:1.1.1'
implementation 'com.google.android.gms:play-services-location:16.0.0'
annotationProcessor 'android.arch.persistence.room:compiler:1.1.1'

View File

@ -0,0 +1,33 @@
package at.fhj.airkoality.model;
import com.google.android.gms.maps.model.LatLng;
import com.google.maps.android.clustering.ClusterItem;
public class MapClusterItem implements ClusterItem {
private LatLng position;
private String titel;
private String snippet;
public MapClusterItem(LatLng position, String titel, String snippet) {
this.position = position;
this.titel = titel;
this.snippet = snippet;
}
@Override
public LatLng getPosition() {
return position;
}
@Override
public String getTitle() {
return titel;
}
@Override
public String getSnippet() {
return snippet;
}
}

View File

@ -17,13 +17,14 @@ import com.google.android.gms.maps.MapView;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.maps.android.clustering.ClusterManager;
import java.util.List;
import at.fhj.airkoality.R;
import at.fhj.airkoality.db.room.AirKoalityDB;
import at.fhj.airkoality.model.Location;
import at.fhj.airkoality.model.MapClusterItem;
import at.fhj.airkoality.ui.activity.MeasurementActivity;
public class MapFragment extends Fragment implements OnMapReadyCallback, GoogleMap.OnInfoWindowClickListener {
@ -31,6 +32,7 @@ public class MapFragment extends Fragment implements OnMapReadyCallback, GoogleM
private MapView mapView;
private GoogleMap map;
private AirKoalityDB database;
private ClusterManager<MapClusterItem> clusterManager;
@Nullable
@Override
@ -64,15 +66,14 @@ public class MapFragment extends Fragment implements OnMapReadyCallback, GoogleM
new Thread(() -> {
List<Location> locations = database.locationDAO().getAll();
getActivity().runOnUiThread(() -> {
map.clear();
clusterManager.clearItems();
for (Location location : locations) {
MarkerOptions markerOptions = new MarkerOptions()
.title(location.getLocation())
.snippet(location.getCity() + ", " + location.getCountry())
.position(new LatLng(location.getLatitude(), location.getLongitude()));
MapClusterItem item = new MapClusterItem(new LatLng(location.getLatitude(), location.getLongitude()),location.getLocation(),location.getCity() + ", " + location.getCountry());
map.addMarker(markerOptions);
clusterManager.addItem(item);
}
clusterManager.cluster();
});
}).start();
}
@ -86,6 +87,10 @@ public class MapFragment extends Fragment implements OnMapReadyCallback, GoogleM
map = googleMap;
map.setOnInfoWindowClickListener(this);
enableMyLocation();
clusterManager = new ClusterManager<>(getContext(), map);
map.setOnCameraIdleListener(clusterManager);
map.setOnMapClickListener(clusterManager);
}

View File

@ -92,4 +92,9 @@ Notifications benötigen immer einen Channel und Channel ID (ab Android O verfü
## 17.05.2019 - Online
## 18.05.2019 - Online
Map Fragment implementiert
## 18.05.2019 - Online
Clustering von Map Fragment um Performance der App zu optimieren -> Je nach Zoomfaktor werden MapMarker gruppiert.