Flutter地图展示插件yandex_mapkit_community的使用
Flutter地图展示插件yandex_mapkit_community的使用
插件介绍
yandex_mapkit_community
是一个用于在iOS和Android上显示Yandex地图的Flutter插件。该插件是Yandex MapKit库的一个开发迭代版本,旨在通过活跃的社区贡献来修复现有错误并引入新功能。
支持情况
平台 | Android | iOS |
---|---|---|
支持 | SDK 21+ | iOS 12+ |
版权声明
此项目使用了Yandex Mapkit,属于Yandex所有。 使用Mapkit时,请参考这些条款。
开始使用
生成API密钥
- 前往 https://developer.tech.yandex.com
- 创建一个
MapKit mobile SDK
密钥
初始化iOS
- 在
ios/Runner/AppDelegate.swift
中添加import YandexMapsMobile
- 在
func application
方法中添加YMKMapKit.setApiKey("YOUR_API_KEY")
- 在应用委托方法中指定你的API密钥
- 在
ios/Podfile
中取消注释platform :ios, '9.0'
并更改到platform :ios, '12.0'
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") // 您首选的语言。非必需,默认为系统语言
YMKMapKit.setApiKey("YOUR_API_KEY") // 您生成的API密钥
GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
}
初始化Android
- 在
android/app/build.gradle
中添加依赖implementation 'com.yandex.android:maps.mobile:4.2.2-full'
- 在
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;
- 在
onCreate
方法中添加MapKitFactory.setApiKey("YOUR_API_KEY");
- 在应用委托方法中指定你的API密钥
dependencies {
implementation 'com.yandex.android:maps.mobile:4.2.2-full'
}
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"); // 您首选的语言。非必需,默认为系统语言
MapKitFactory.setApiKey("YOUR_API_KEY"); // 您生成的API密钥
super.configureFlutterEngine(flutterEngine);
}
}
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") // 您首选的语言。非必需,默认为系统语言
MapKitFactory.setApiKey("YOUR_API_KEY") // 您生成的API密钥
super.configureFlutterEngine(flutterEngine)
}
}
使用示例
有关使用示例,请参阅 示例 app
补充说明
YandexMapkit始终仅与一种语言一起工作。 由于原生限制,在应用程序启动后无法更改。
Android
混合组成
默认情况下,Android视图使用 Hybrid Composition 渲染。
要使用 YandexMap
控件在Android上渲染虚拟显示(旧组成),请设置 AndroidYandexMap.useAndroidViewSurface
为false。 将其放在任何代码之前,以使用 YandexMap
控件。
AndroidYandexMap.useAndroidViewSurface = false;
更多关于Flutter地图展示插件yandex_mapkit_community的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter地图展示插件yandex_mapkit_community的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何在Flutter中使用yandex_mapkit_community
插件来展示Yandex地图的代码示例。这个插件允许你在Flutter应用中集成Yandex地图服务。
首先,确保你已经在pubspec.yaml
文件中添加了yandex_mapkit_community
依赖:
dependencies:
flutter:
sdk: flutter
yandex_mapkit_community: ^最新版本号 # 请替换为实际最新版本号
然后运行flutter pub get
来获取依赖。
接下来,你需要在Yandex开发者控制台(https://developer.yandex.com/)创建一个项目并获取API密钥。
下面是一个完整的Flutter应用示例,展示如何使用yandex_mapkit_community
插件:
import 'package:flutter/material.dart';
import 'package:yandex_mapkit_community/yandex_mapkit_community.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: YandexMapScreen(),
);
}
}
class YandexMapScreen extends StatefulWidget {
@override
_YandexMapScreenState createState() => _YandexMapScreenState();
}
class _YandexMapScreenState extends State<YandexMapScreen> {
late YandexMapController _yandexMapController;
@override
void initState() {
super.initState();
// 初始化YandexMapController
_yandexMapController = YandexMapController(
apiKey: '你的Yandex API密钥', // 请替换为你的实际API密钥
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Yandex Map Example'),
),
body: YandexMap(
controller: _yandexMapController,
options: YandexMapOptions(
cameraPosition: YandexCameraPosition(
target: YandexLatLng(55.755826, 37.617300), // 莫斯科的中心坐标
zoom: 14.0,
),
),
),
);
}
@override
void dispose() {
_yandexMapController.dispose();
super.dispose();
}
}
在这个示例中:
- 我们创建了一个Flutter应用,并在
pubspec.yaml
中添加了yandex_mapkit_community
依赖。 - 在
YandexMapScreen
类中,我们初始化了一个YandexMapController
对象,并传递了Yandex API密钥。 - 我们使用
YandexMap
小部件来显示地图,并通过YandexMapOptions
设置初始的相机位置和缩放级别。 - 在
dispose
方法中,我们调用了_yandexMapController.dispose()
来释放资源。
请确保你已经替换了你的Yandex API密钥
为你在Yandex开发者控制台获取的实际API密钥。
这个示例展示了如何使用yandex_mapkit_community
插件在Flutter应用中展示Yandex地图。你可以根据需要进一步自定义和扩展这个示例。