yandex_mapkit
一个用于在 iOS 和 Android 上显示 Yandex 地图的 Flutter 插件。
| Android | iOS | |
|---|---|---|
| 支持 | SDK 21+ | iOS 12+ |
免责声明:此项目使用了 Yandex Mapkit,该技术属于 Yandex。使用 Mapkit 时,请参阅这些使用条款。
入门
生成您的 API 密钥
- 前往 https://developer.tech.yandex.com
- 创建一个
MapKit 移动 SDK密钥
初始化 iOS
- 在
ios/Runner/AppDelegate.swift中添加import YandexMapsMobile - 在
ios/Runner/AppDelegate.swift的func application中添加YMKMapKit.setApiKey("YOUR_API_KEY") - 在应用程序代理
ios/Runner/AppDelegate.swift中指定您的 API 密钥 - 在
ios/Podfile中取消注释platform :ios, '9.0'并将其更改为platform :ios, '12.0'
ios/Runner/AppDelegate.swift:
import UIKit
import Flutter
import YandexMapsMobile
@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
YMKMapKit.setLocale("YOUR_LOCALE") // Your preferred language. Not required, defaults to system language
YMKMapKit.setApiKey("YOUR_API_KEY") // Your generated API key
GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
}
初始化 Android
- 将依赖项
implementation 'com.yandex.android:maps.mobile:4.2.2-full'添加到android/app/build.gradle - 在
android/app/src/main/AndroidManifest.xml中添加权限<uses-permission android:name="android.permission.INTERNET"/>和<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> - 在
android/app/src/main/.../MainActivity.java/android/app/src/main/.../MainActivity.kt中添加import com.yandex.mapkit.MapKitFactory; - 在
android/app/src/main/.../MainActivity.java/android/app/src/main/.../MainActivity.kt的onCreate方法中添加MapKitFactory.setApiKey("YOUR_API_KEY"); - 在应用程序代理
android/app/src/main/.../MainActivity.java/android/app/src/main/.../MainActivity.kt中指定您的 API 密钥
android/app/build.gradle:
dependencies {
implementation 'com.yandex.android:maps.mobile:4.2.2-full'
}
对于 Java 项目
android/app/src/main/.../MainActivity.java:
import androidx.annotation.NonNull;
import io.flutter.embedding.android.FlutterActivity;
import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.plugins.GeneratedPluginRegistrant;
import com.yandex.mapkit.MapKitFactory;
public class MainActivity extends FlutterActivity {
@Override
public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
MapKitFactory.setLocale("YOUR_LOCALE"); // Your preferred language. Not required, defaults to system language
MapKitFactory.setApiKey("YOUR_API_KEY"); // Your generated API key
super.configureFlutterEngine(flutterEngine);
}
}
对于 Kotlin 项目
android/app/src/main/.../MainActivity.kt
import androidx.annotation.NonNull
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugins.GeneratedPluginRegistrant
import com.yandex.mapkit.MapKitFactory
class MainActivity: FlutterActivity() {
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
MapKitFactory.setLocale("YOUR_LOCALE") // Your preferred language. Not required, defaults to system language
MapKitFactory.setApiKey("YOUR_API_KEY") // Your generated API key
super.configureFlutterEngine(flutterEngine)
}
}
用法
有关用法示例,请参阅示例 应用
其他说明
YandexMapkit 始终只支持一种语言。由于原生限制,应用程序启动后无法更改。
Android
混合组合
默认情况下,Android 视图使用 混合组合 进行渲染。要在 Android 上使用虚拟显示(旧组合)渲染 YandexMap 小部件,请将 AndroidYandexMap.useAndroidViewSurface 设置为 false。在任何地方使用 YandexMap 小部件之前,将此代码放置在您的代码中。
AndroidYandexMap.useAndroidViewSurface = false;
功能
- 使用图钉/折线/多边形/圆——添加、更新、删除、点击事件、样式设置
- 使用地图对象集合
- 使用聚合
- 移动地图
- 设置地图边界
- 显示当前用户位置
- 地图样式
- 地址建议
- 基本驾车/自行车路线规划
- 基本地址正向/反向搜索
- 使用地理对象
- 显示当前交通状况
