Skip to content

Commit 17d8caf

Browse files
authored
feat(sample): advanced viewport gestures (#32) - Android
* - IViewportPlugin - WIP * - clean up classes * - clean up proj file * - Add new events WIP - CameraChanged * - ios: add camerachanged event * - bump: 11.5.0-alpha02 * - move CameraAnimationsExample to Camera folder * - Centralize group indices * - force light theme * - add viewport method handlers for iOS * - parse encoded points for linestring OK - fix Mapready invocation order * - add viewportstatuschanged - add TransitionTo * - add ViewportOptions * - add gesture rotation events * - fix type casting error * - add events: IndicatorPositionChanged, IndicatorAccuracyChanged for iOS * - align with new native APIs for iOS * - add funding * - fix event hookup
1 parent 49e9212 commit 17d8caf

File tree

85 files changed

+2525
-292
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

85 files changed

+2525
-292
lines changed

.github/FUNDING.yml

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
github: [tuyen-vuduc]
2+
buy_me_a_coffee: tuyen.vuduc
3+
custom: ["https://www.paypal.me/tuyenvd"]

build.cake

-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
var target = Argument("target", "example");
44
var name = Argument("name", "Awesome");
55
var index = Argument("index", 0);
6-
var gindex = Argument("gindex", 0);
76
var group = Argument("group", "None");
87
var title = Argument("title", "Awesome");
98
var subtitle = Argument("subtitle", "Awesome");
@@ -37,7 +36,6 @@ class {name}ExampleInfo : IExampleInfo
3736
public string Title => ""{title ?? "No title"}"";
3837
public string Subtitle => ""{subtitle ?? "No subtitle"}"";
3938
public string PageRoute => typeof({name}Example).FullName;
40-
public int GroupIndex => {gindex};
4139
public int Index => {index};
4240
}}");
4341

src/libs/Mapbox.Maui/IMapboxView.cs

+53-6
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using MapboxMaui.Annotations;
55
using MapboxMaui.Query;
66
using MapboxMaui.Styles;
7+
using MapboxMaui.Viewport;
78

89
public partial interface IMapboxView : IView
910
{
@@ -32,6 +33,8 @@ public partial interface IMapboxView : IView
3233
IAnnotationController AnnotationController { get; }
3334

3435
IMapFeatureQueryable QueryManager { get; }
36+
37+
IViewportPlugin Viewport { get; }
3538
}
3639

3740
partial interface IMapboxView
@@ -47,6 +50,19 @@ partial interface IMapboxView
4750

4851
event EventHandler<MapTappedEventArgs> MapTapped;
4952
ICommand Command { get; }
53+
54+
event EventHandler<CameraChangedEventArgs> CameraChanged;
55+
ICommand CameraChangedCommand { get; }
56+
57+
event EventHandler<Viewport.ViewportStatusChangedEventArgs> ViewportStatusChanged;
58+
ICommand ViewportStatusChangedCommand { get; }
59+
60+
event EventHandler<Gestures.RotatingBeganEventArgs> RotatingBegan;
61+
ICommand RotatingBeganCommand { get; }
62+
event EventHandler<Gestures.RotatingEndedEventArgs> RotatingEnded;
63+
ICommand RotatingEndedCommand { get; }
64+
event EventHandler<Gestures.RotatingEventArgs> Rotating;
65+
ICommand RotatingCommand { get; }
5066
}
5167

5268
public interface IAnnotationController
@@ -66,12 +82,7 @@ public interface IMapboxController
6682
{
6783
IPosition GetMapPosition(ScreenPosition position);
6884
CoordinateBounds GetCoordinateBoundsForCamera(CameraOptions cameraOptions);
69-
}
70-
71-
public interface IMapCameraController
72-
{
73-
void FlyTo(CameraOptions cameraOptions, AnimationOptions animationOptions = default, Action<AnimationState> completion = default);
74-
void EaseTo(CameraOptions cameraOptions, AnimationOptions animationOptions = default, Action<AnimationState> completion = default);
85+
ScreenPosition GetScreenPosition(IPosition position);
7586
}
7687

7788
public class MapTappedEventArgs : EventArgs
@@ -82,4 +93,40 @@ public MapTappedEventArgs(MapTappedPosition position)
8293
{
8394
Position = position;
8495
}
96+
}
97+
public class CameraChangedEventArgs : EventArgs
98+
{
99+
public CameraChangedEventArgs(CameraOptions options)
100+
{
101+
Options = options;
102+
}
103+
104+
public CameraOptions Options { get; }
105+
}
106+
public class IndicatorAccuracyRadiusChangedEventArgs : EventArgs
107+
{
108+
public IndicatorAccuracyRadiusChangedEventArgs(double radius)
109+
{
110+
Radius = radius;
111+
}
112+
113+
public double Radius { get; }
114+
}
115+
public class IndicatorBearingChangedEventArgs : EventArgs
116+
{
117+
public IndicatorBearingChangedEventArgs(double bearing)
118+
{
119+
Bearing = bearing;
120+
}
121+
122+
public double Bearing { get; }
123+
}
124+
public class IndicatorPositionChangedEventArgs : EventArgs
125+
{
126+
public IndicatorPositionChangedEventArgs(IPosition position)
127+
{
128+
Position = position;
129+
}
130+
131+
public IPosition Position { get; }
85132
}

src/libs/Mapbox.Maui/Mapbox.Maui.csproj

+13-31
Original file line numberDiff line numberDiff line change
@@ -61,14 +61,17 @@
6161
<RepositoryUrl>https://github.com/tuyen-vuduc/mapbox-maui</RepositoryUrl>
6262
<PackageProjectUrl>https://mapbox.tuyen-vuduc.tech</PackageProjectUrl>
6363
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
64-
<PackageVersion>11.5.0-alpha01</PackageVersion>
64+
<PackageVersion>11.5.1-alpha01</PackageVersion>
6565
<PackageReadmeFile>README.md</PackageReadmeFile>
6666
<PackageLicenseFile>LICENSE</PackageLicenseFile>
6767
<PackageIcon>tv-mapbox.png</PackageIcon>
6868
</PropertyGroup>
6969
<PropertyGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">
7070
<CreatePackage>false</CreatePackage>
7171
</PropertyGroup>
72+
<ItemGroup>
73+
<None Remove="Models\Gestures\" />
74+
</ItemGroup>
7275
<ItemGroup>
7376
<None Include="../../../assets/tv-mapbox.png" Pack="True" PackagePath="tv-mapbox.png" />
7477
<None Include="../../../LICENSE" Pack="True" PackagePath="" />
@@ -78,32 +81,24 @@
7881
<PackageReference Include="Xamarin.Build.Download" Version="0.11.4" />
7982
<PackageReference Include="GeoJSON.Text" Version="1.0.2" />
8083
<PackageReference Include="Microsoft.Maui.Controls" Version="8.0.40" />
84+
<PackageReference Update="Microsoft.Maui.Controls.Compatibility" Version="8.0.40" />
8185
</ItemGroup>
8286
<ItemGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'">
83-
<PackageReference Include="Com.Mapbox.Maps.Android" Version="11.5.0" />
87+
<PackageReference Include="Com.Mapbox.Maps.Android" Version="11.5.1" />
8488
<PackageReference Include="Xamarin.AndroidX.AppCompat" Version="1.6.1.10" />
8589
<PackageReference Include="Xamarin.AndroidX.Fragment " Version="1.7.0.2" />
8690
<PackageReference Include="Xamarin.AndroidX.Fragment.Ktx" Version="1.7.0.2" />
87-
<PackageReference Include="Xamarin.Kotlin.StdLib" Version="1.9.23.3" PrivateAssets="none" />
88-
<PackageReference Include="Xamarin.Kotlin.StdLib.Common" Version="1.9.23.3" PrivateAssets="none" />
91+
<PackageReference Include="Xamarin.Kotlin.StdLib" Version="2.0.0.1" PrivateAssets="none" />
92+
<PackageReference Include="Xamarin.Kotlin.StdLib.Common" Version="2.0.0.1" PrivateAssets="none" />
8993
<PackageReference Include="Dependencies.Gradle" Version="8.6.0.1" />
94+
<PackageReference Include="Xamarin.AndroidX.Annotation" Version="1.8.0.1" />
9095
</ItemGroup>
9196
<ItemGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">
92-
<PackageReference Include="MapboxMapsObjC.iOS" Version="11.5.1" />
93-
<PackageReference Include="MapboxMaps.iOS" Version="11.5.1" />
97+
<PackageReference Include="MapboxMapsObjC.iOS" Version="11.5.2.2" />
98+
<PackageReference Include="MapboxMaps.iOS" Version="11.5.2" />
9499
</ItemGroup>
95100
<ItemGroup>
96-
<Folder Include="Models\Styles\" />
97-
<Folder Include="Models\Styles\Sources\" />
98-
<Folder Include="Models\Expressions\" />
99-
<Folder Include="Models\Styles\Layers\" />
100-
<Folder Include="Models\Annotations\" />
101-
<Folder Include="Platforms\iOS\Annotations\" />
102-
<Folder Include="Platforms\Android\Annotations\" />
103-
<Folder Include="Models\Offline\" />
104-
<Folder Include="Platforms\iOS\Offline\" />
105-
<Folder Include="Platforms\Android\Offline\" />
106-
<Folder Include="Models\Query\" />
101+
<Folder Include="Models\Gestures\" />
107102
</ItemGroup>
108103
<ProjectExtensions>
109104
<MonoDevelop>
@@ -114,18 +109,5 @@
114109
</Properties>
115110
</MonoDevelop>
116111
</ProjectExtensions>
117-
<ItemGroup>
118-
<Compile Update="Platforms\Android\MapboxViewHandler.Camera.cs">
119-
<ExcludeFromCurrentConfiguration>true</ExcludeFromCurrentConfiguration>
120-
</Compile>
121-
</ItemGroup>
122-
<ItemGroup>
123-
<PackageReference Update="Microsoft.Maui.Controls.Compatibility" Version="8.0.40" />
124-
</ItemGroup>
125-
126-
<Target
127-
Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'"
128-
Name="_GradleDependencyResolverTrigger"
129-
DependsOnTargets="_GradleSync"
130-
BeforeTargets="_BuildLibraryImportsCache" />
112+
<Target Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'" Name="_GradleDependencyResolverTrigger" DependsOnTargets="_GradleSync" BeforeTargets="_BuildLibraryImportsCache" />
131113
</Project>

0 commit comments

Comments
 (0)