|
17 | 17 | import android.os.Build; |
18 | 18 | import android.util.DisplayMetrics; |
19 | 19 | import android.util.Log; |
| 20 | +import android.util.Pair; |
20 | 21 | import android.view.Gravity; |
21 | 22 | import android.view.MotionEvent; |
22 | 23 | import android.view.TextureView; |
23 | 24 | import android.view.View; |
24 | 25 | import android.widget.FrameLayout; |
25 | | -import android.util.Pair; |
26 | 26 |
|
27 | 27 | import androidx.annotation.NonNull; |
28 | 28 | import androidx.lifecycle.DefaultLifecycleObserver; |
29 | 29 | import androidx.lifecycle.Lifecycle; |
30 | 30 | import androidx.lifecycle.LifecycleOwner; |
| 31 | + |
31 | 32 | import com.google.gson.Gson; |
32 | 33 | import com.google.gson.JsonArray; |
33 | 34 | import com.google.gson.JsonElement; |
34 | 35 | import com.google.gson.JsonParser; |
35 | 36 |
|
36 | | -import org.maplibre.android.gestures.AndroidGesturesManager; |
37 | | -import org.maplibre.android.gestures.MoveGestureDetector; |
38 | | -import org.maplibre.android.location.engine.LocationEngine; |
39 | | -import org.maplibre.android.location.engine.LocationEngineDefault; |
40 | | -import org.maplibre.android.location.engine.LocationEngineProxy; |
41 | | -import org.maplibre.android.location.engine.LocationEngineRequest; |
42 | | -import org.maplibre.geojson.Feature; |
43 | | -import org.maplibre.geojson.FeatureCollection; |
| 37 | +import org.jetbrains.annotations.NotNull; |
44 | 38 | import org.maplibre.android.camera.CameraPosition; |
45 | 39 | import org.maplibre.android.camera.CameraUpdate; |
46 | 40 | import org.maplibre.android.camera.CameraUpdateFactory; |
|
49 | 43 | import org.maplibre.android.geometry.LatLngBounds; |
50 | 44 | import org.maplibre.android.geometry.LatLngQuad; |
51 | 45 | import org.maplibre.android.geometry.VisibleRegion; |
| 46 | +import org.maplibre.android.gestures.AndroidGesturesManager; |
| 47 | +import org.maplibre.android.gestures.MoveGestureDetector; |
52 | 48 | import org.maplibre.android.location.LocationComponent; |
53 | 49 | import org.maplibre.android.location.LocationComponentActivationOptions; |
54 | 50 | import org.maplibre.android.location.LocationComponentOptions; |
55 | 51 | import org.maplibre.android.location.OnCameraTrackingChangedListener; |
56 | 52 | import org.maplibre.android.location.engine.LocationEngineCallback; |
| 53 | +import org.maplibre.android.location.engine.LocationEngineRequest; |
57 | 54 | import org.maplibre.android.location.engine.LocationEngineResult; |
58 | 55 | import org.maplibre.android.location.modes.CameraMode; |
59 | 56 | import org.maplibre.android.location.modes.RenderMode; |
60 | | -import org.maplibre.android.maps.MapView; |
61 | 57 | import org.maplibre.android.maps.MapLibreMap; |
62 | 58 | import org.maplibre.android.maps.MapLibreMapOptions; |
| 59 | +import org.maplibre.android.maps.MapView; |
63 | 60 | import org.maplibre.android.maps.OnMapReadyCallback; |
64 | 61 | import org.maplibre.android.maps.Style; |
65 | 62 | import org.maplibre.android.offline.OfflineManager; |
|
72 | 69 | import org.maplibre.android.style.layers.Layer; |
73 | 70 | import org.maplibre.android.style.layers.LineLayer; |
74 | 71 | import org.maplibre.android.style.layers.Property; |
| 72 | +import org.maplibre.android.style.layers.PropertyFactory; |
75 | 73 | import org.maplibre.android.style.layers.PropertyValue; |
76 | 74 | import org.maplibre.android.style.layers.RasterLayer; |
77 | 75 | import org.maplibre.android.style.layers.SymbolLayer; |
78 | | -import org.maplibre.android.style.layers.PropertyFactory; |
79 | 76 | import org.maplibre.android.style.sources.CustomGeometrySource; |
80 | 77 | import org.maplibre.android.style.sources.GeoJsonSource; |
81 | 78 | import org.maplibre.android.style.sources.ImageSource; |
82 | 79 | import org.maplibre.android.style.sources.Source; |
83 | 80 | import org.maplibre.android.style.sources.VectorSource; |
| 81 | +import org.maplibre.geojson.Feature; |
| 82 | +import org.maplibre.geojson.FeatureCollection; |
84 | 83 |
|
85 | | -import io.flutter.plugin.common.BinaryMessenger; |
86 | | -import io.flutter.plugin.common.MethodCall; |
87 | | -import io.flutter.plugin.common.MethodChannel; |
88 | | -import io.flutter.plugin.platform.PlatformView; |
89 | 84 | import java.io.IOException; |
90 | 85 | import java.io.InputStream; |
91 | 86 | import java.util.ArrayList; |
|
98 | 93 | import java.util.Map; |
99 | 94 | import java.util.Set; |
100 | 95 |
|
| 96 | +import io.flutter.plugin.common.BinaryMessenger; |
| 97 | +import io.flutter.plugin.common.MethodCall; |
| 98 | +import io.flutter.plugin.common.MethodChannel; |
| 99 | +import io.flutter.plugin.platform.PlatformView; |
| 100 | + |
101 | 101 |
|
102 | 102 | /** Controller of a single MapLibreMaps MapView instance. */ |
103 | 103 | @SuppressLint("MissingPermission") |
@@ -132,6 +132,7 @@ final class MapLibreMapController |
132 | 132 | private boolean myLocationEnabled = false; |
133 | 133 | private int myLocationTrackingMode = 0; |
134 | 134 | private int myLocationRenderMode = 0; |
| 135 | + private LocationEngineFactory myLocationEngineFactory = new LocationEngineFactory(); |
135 | 136 | private boolean disposed = false; |
136 | 137 | private boolean dragEnabled = true; |
137 | 138 | private MethodChannel.Result mapReadyResult; |
@@ -299,6 +300,7 @@ private void enableLocationComponent(@NonNull Style style) { |
299 | 300 | LocationComponentActivationOptions |
300 | 301 | .builder(context, style) |
301 | 302 | .locationComponentOptions(buildLocationComponentOptions(style)) |
| 303 | + .locationEngine(myLocationEngineFactory.getLocationEngine(context)) |
302 | 304 | .build(); |
303 | 305 |
|
304 | 306 | locationComponent.activateLocationComponent(options); |
@@ -680,7 +682,6 @@ private Pair<Feature, String> firstFeatureOnLayers(RectF in) { |
680 | 682 |
|
681 | 683 | @Override |
682 | 684 | public void onMethodCall(MethodCall call, MethodChannel.Result result) { |
683 | | - |
684 | 685 | switch (call.method) { |
685 | 686 | case "map#waitForMap": |
686 | 687 | if (mapLibreMap != null) { |
@@ -1877,17 +1878,8 @@ public void setCameraTargetBounds(LatLngBounds bounds) { |
1877 | 1878 | } |
1878 | 1879 |
|
1879 | 1880 | @Override |
1880 | | - public void setLocationEngineProperties(LocationEngineRequest locationEngineRequest){ |
1881 | | - if(locationComponent != null){ |
1882 | | - if(locationEngineRequest.getPriority() == LocationEngineRequest.PRIORITY_HIGH_ACCURACY){ |
1883 | | - locationComponent.setLocationEngine(new LocationEngineProxy( |
1884 | | - new MapLibreGPSLocationEngine(context))); |
1885 | | - } else { |
1886 | | - locationComponent.setLocationEngine( |
1887 | | - LocationEngineDefault.INSTANCE.getDefaultLocationEngine(context)); |
1888 | | - } |
1889 | | - locationComponent.setLocationEngineRequest(locationEngineRequest); |
1890 | | - } |
| 1881 | + public void setLocationEngineProperties(@NotNull LocationEngineRequest locationEngineRequest) { |
| 1882 | + myLocationEngineFactory.initLocationComponent(context, locationComponent, locationEngineRequest); |
1891 | 1883 | } |
1892 | 1884 |
|
1893 | 1885 | @Override |
|
0 commit comments