yandex_mapkit

一个用于在 iOS 和 Android 上显示 Yandex 地图的 Flutter 插件。

Android iOS
支持 SDK 21+ iOS 12+

免责声明:此项目使用了 Yandex Mapkit,该技术属于 Yandex。使用 Mapkit 时,请参阅这些使用条款

入门

生成您的 API 密钥

  1. 前往 https://developer.tech.yandex.com
  2. 创建一个 MapKit 移动 SDK 密钥

初始化 iOS

  1. ios/Runner/AppDelegate.swift 中添加 import YandexMapsMobile
  2. ios/Runner/AppDelegate.swiftfunc application 中添加 YMKMapKit.setApiKey("YOUR_API_KEY")
  3. 在应用程序代理 ios/Runner/AppDelegate.swift 中指定您的 API 密钥
  4. 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

  1. 将依赖项 implementation 'com.yandex.android:maps.mobile:4.2.2-full' 添加到 android/app/build.gradle
  2. android/app/src/main/AndroidManifest.xml 中添加权限 <uses-permission android:name="android.permission.INTERNET"/><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
  3. android/app/src/main/.../MainActivity.java/android/app/src/main/.../MainActivity.kt 中添加 import com.yandex.mapkit.MapKitFactory;
  4. android/app/src/main/.../MainActivity.java/android/app/src/main/.../MainActivity.ktonCreate 方法中添加 MapKitFactory.setApiKey("YOUR_API_KEY");
  5. 在应用程序代理 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)
  }
}

用法

有关用法示例,请参阅示例 应用

image

其他说明

YandexMapkit 始终只支持一种语言。由于原生限制,应用程序启动后无法更改。

Android

混合组合

默认情况下,Android 视图使用 混合组合 进行渲染。要在 Android 上使用虚拟显示(旧组合)渲染 YandexMap 小部件,请将 AndroidYandexMap.useAndroidViewSurface 设置为 false。在任何地方使用 YandexMap 小部件之前,将此代码放置在您的代码中。

AndroidYandexMap.useAndroidViewSurface = false;

功能

  • 使用图钉/折线/多边形/圆——添加、更新、删除、点击事件、样式设置
  • 使用地图对象集合
  • 使用聚合
  • 移动地图
  • 设置地图边界
  • 显示当前用户位置
  • 地图样式
  • 地址建议
  • 基本驾车/自行车路线规划
  • 基本地址正向/反向搜索
  • 使用地理对象
  • 显示当前交通状况

GitHub

查看 Github