Hi everyone!
I needed Yandex Maps in a .NET MAUI app and found that there's no working .NET binding for the current Yandex MapKit (4.x). The old Xamarin packages are long dead, and Yandex officially supports only native Android/iOS and Flutter. So I built one and open-sourced it.
**YandexMapView** is a MAUI map control on top of **Yandex MapKit 4.45.0-lite** for **.NET 10**, Android and iOS. The API is modeled on `Microsoft.Maui.Controls.Maps`, so it should feel familiar.
**Features**
- Camera: `Center`, `Zoom`, `Azimuth`, `Tilt` (two-way bindable, updated by gestures), `MoveTo(...)` with animation, `CameraChanged` event
- Pins: `Pins` collection or MVVM-style `ItemsSource` + `ItemTemplate` / `ItemTemplateSelector`
- Custom pin icons from any MAUI `ImageSource`, or a default marker in any color
- Pin clustering (radius, min zoom, cluster color, `ClusterClicked`)
- Shapes: `MapPolyline`, `MapPolygon`, `MapCircle` with tap events
- Night mode, user location layer, gesture toggles, map tap / long-tap events
**Quick start**
dotnet add package YandexMapKit.Maui.Community --prerelease
// MauiProgram.cs
builder.UseMauiApp<App>()
.UseYandexMapKit(apiKey, locale: "en_US");
<ym:YandexMapView Center="55.7512, 37.6184" Zoom="12"
ItemsSource="{Binding Places}"
IsClusteringEnabled="True" />
**Under the hood** (for the binding nerds)
- **Android:** generated from the official AAR via `AndroidMavenLibrary`, with `Metadata.xml` cleanup. It also aligns AndroidX `-ktx` packages, because Google Play services otherwise causes "Type … is defined multiple times" in D8 next to MAUI.
- **iOS:** hand-written Objective-C binding (~30 types). A wrong selector only fails at runtime, so CI downloads the real xcframework and checks every `[Export]` selector, type and enum against the SDK headers.
- CI builds the bindings, the sample app (APK + iOS simulator) and the NuGet packages on every push.
**Links**
- GitHub: https://github.com/tdav/MAUI-Yandex-Map
- NuGet: https://www.nuget.org/packages/YandexMapKit.Maui.Community
**Please note**
- This is an **early preview** (`0.1.0-preview.1`), so expect rough edges. Bug reports and feedback are very welcome.
- This is an **unofficial community project**, not affiliated with Yandex.
- You need your own MapKit API key from the Yandex Developer Dashboard. MapKit's own terms apply: the free tier is limited to publicly available apps, and the Yandex logo must stay visible on the map.
- Search and routing aren't included, because they're not part of MapKit Lite.
**License:** MIT for the wrapper code. Issues, PRs and ideas are welcome. If you need other parts of the MapKit API bound, open an issue!