added doc
This commit is contained in:
parent
4ff5b18998
commit
92bcb8473c
|
@ -89,7 +89,6 @@
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/apk_list" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/apk_list" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/build-info" />
|
<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/bundle_manifest" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/check_manifest_result" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/check_manifest_result" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/compatible_screen_manifest" />
|
<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" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-runtime-classes" />
|
<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/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_app_manifest" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant_run_app_info_output_file" />
|
<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_main_apk_resources" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant_run_merged_manifests" />
|
<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/javac" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifest-checker" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifest-checker" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged_assets" />
|
<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: 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: 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.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-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" 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" />
|
<orderEntry type="library" name="Gradle: android.arch.lifecycle:common:1.1.1@jar" level="project" />
|
||||||
|
|
|
@ -30,6 +30,7 @@ dependencies {
|
||||||
implementation 'com.android.support:design:28.0.0'
|
implementation 'com.android.support:design:28.0.0'
|
||||||
implementation 'com.android.support:support-v4: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.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 'android.arch.persistence.room:runtime:1.1.1'
|
||||||
implementation 'com.google.android.gms:play-services-location:16.0.0'
|
implementation 'com.google.android.gms:play-services-location:16.0.0'
|
||||||
annotationProcessor 'android.arch.persistence.room:compiler:1.1.1'
|
annotationProcessor 'android.arch.persistence.room:compiler:1.1.1'
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
|
@ -17,13 +17,14 @@ import com.google.android.gms.maps.MapView;
|
||||||
import com.google.android.gms.maps.OnMapReadyCallback;
|
import com.google.android.gms.maps.OnMapReadyCallback;
|
||||||
import com.google.android.gms.maps.model.LatLng;
|
import com.google.android.gms.maps.model.LatLng;
|
||||||
import com.google.android.gms.maps.model.Marker;
|
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 java.util.List;
|
||||||
|
|
||||||
import at.fhj.airkoality.R;
|
import at.fhj.airkoality.R;
|
||||||
import at.fhj.airkoality.db.room.AirKoalityDB;
|
import at.fhj.airkoality.db.room.AirKoalityDB;
|
||||||
import at.fhj.airkoality.model.Location;
|
import at.fhj.airkoality.model.Location;
|
||||||
|
import at.fhj.airkoality.model.MapClusterItem;
|
||||||
import at.fhj.airkoality.ui.activity.MeasurementActivity;
|
import at.fhj.airkoality.ui.activity.MeasurementActivity;
|
||||||
|
|
||||||
public class MapFragment extends Fragment implements OnMapReadyCallback, GoogleMap.OnInfoWindowClickListener {
|
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 MapView mapView;
|
||||||
private GoogleMap map;
|
private GoogleMap map;
|
||||||
private AirKoalityDB database;
|
private AirKoalityDB database;
|
||||||
|
private ClusterManager<MapClusterItem> clusterManager;
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
|
@ -64,15 +66,14 @@ public class MapFragment extends Fragment implements OnMapReadyCallback, GoogleM
|
||||||
new Thread(() -> {
|
new Thread(() -> {
|
||||||
List<Location> locations = database.locationDAO().getAll();
|
List<Location> locations = database.locationDAO().getAll();
|
||||||
getActivity().runOnUiThread(() -> {
|
getActivity().runOnUiThread(() -> {
|
||||||
map.clear();
|
clusterManager.clearItems();
|
||||||
for (Location location : locations) {
|
for (Location location : locations) {
|
||||||
MarkerOptions markerOptions = new MarkerOptions()
|
MapClusterItem item = new MapClusterItem(new LatLng(location.getLatitude(), location.getLongitude()),location.getLocation(),location.getCity() + ", " + location.getCountry());
|
||||||
.title(location.getLocation())
|
|
||||||
.snippet(location.getCity() + ", " + location.getCountry())
|
|
||||||
.position(new LatLng(location.getLatitude(), location.getLongitude()));
|
|
||||||
|
|
||||||
map.addMarker(markerOptions);
|
|
||||||
|
clusterManager.addItem(item);
|
||||||
}
|
}
|
||||||
|
clusterManager.cluster();
|
||||||
});
|
});
|
||||||
}).start();
|
}).start();
|
||||||
}
|
}
|
||||||
|
@ -86,6 +87,10 @@ public class MapFragment extends Fragment implements OnMapReadyCallback, GoogleM
|
||||||
map = googleMap;
|
map = googleMap;
|
||||||
map.setOnInfoWindowClickListener(this);
|
map.setOnInfoWindowClickListener(this);
|
||||||
enableMyLocation();
|
enableMyLocation();
|
||||||
|
|
||||||
|
clusterManager = new ClusterManager<>(getContext(), map);
|
||||||
|
map.setOnCameraIdleListener(clusterManager);
|
||||||
|
map.setOnMapClickListener(clusterManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -92,4 +92,9 @@ Notifications benötigen immer einen Channel und Channel ID (ab Android O verfü
|
||||||
|
|
||||||
## 17.05.2019 - Online
|
## 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.
|
Loading…
Reference in New Issue