6月产品上新|Flutter SDK 正式上线,一份Dart 代码,双端跑通定位与地图

位置服务跨端开发者久等啦!

过去开发者们在 Flutter 里做定位和地图,要么自己用 MethodChannel 手写桥接,容易踩平台差异的坑,要么依赖第三方方案,能力完整度和长期维护都难有保障。

腾讯位置服务正式发布官方 Flutter 插件,定位 SDK 与地图 SDK 现已全面完成 Flutter 适配。开发者只需编写一套 Dart 代码,即可在 Android 与 iOS 双端直接调用原生级能力,无需额外适配。

这不仅大幅降低了 Flutter 开发者的接入门槛,更让开发者能以最小成本获得与原生 SDK 对齐的定位和地图功能。且该插件由腾讯位置服务官方团队持续维护,确保长期稳定更新与技术支持,为您的跨端应用提供可靠的位置服务底座。

 


🚀 PART 01 · 腾讯位置服务定位 SDK:跨端定位能力一站式打包

定位插件(tencent_location_flutter_plugin)为同一份 Dart 代码提供跨平台的定位、地理围栏、设备朝向、坐标工具等完整能力。

📋 核心能力一览

能力 说明 Android iOS
连续定位 可订阅的位置流,支持设置回调间隔、坐标系、返回等级、逆地址解析等参数
单次定位 一次性获取当前定位结果,可配置超时时长
地理围栏 圆形 / 多边形 / 行政区划三种形态,支持进入 / 离开 / 停留事件回调
设备朝向 订阅式获取真北方向、磁北方向等朝向信息 -
设备状态 随连续定位一并产生 GPS / Wi-Fi / 蜂窝 / 定位总开关等状态变化事件 -
前台定位服务 让定位在应用进入后台时也能继续运行 -
工具方法 坐标系互转、两点距离计算、点是否落在指定圆内等通用工具
多实例 同一应用内可创建多个定位 / 围栏管理器,事件流互不干扰

💻 一段代码看懂接入

import 'package:tencent_location_flutter_plugin/tencent_location_flutter_plugin.dart';

Future<void> main() async {
  // ① 隐私合规同意
  await TencentLocationSDK.setPrivacyPolicyAgreement(true);

  // ② 初始化(双端各自的 Key)
  await TencentLocationSDK.init(
    androidApiKey: 'YOUR_ANDROID_API_KEY',
    iosApiKey: 'YOUR_IOS_API_KEY',
  );

  // ③ 发起一次单次定位
  final manager = TencentLocationManager();
  final loc = await manager.startSingleLocation(
    TencentLocationRequest.create()..setRequestLevel(RequestLevel.adminArea),
  );
  print('当前位置:${loc.latitude}, ${loc.longitude}');
}

 


🗺️ PART 02 · 腾讯位置服务地图 SDK:核心功能对齐原生

地图插件(flutter_tencent_map)首期交付的地图核心功能,覆盖地图展示、交互、覆盖物三大板块:

📋 核心功能一览

核心功能 说明
🗺️ 地图基础 创建和显示地图、地图类型切换(标准 / 卫星)、自定义地图样式(个性化地图)、显示定位、实时路况、3D 建筑物、底图标注控制、隐私合规、Logo 位置控制
👆 地图交互 手势控制(缩放 / 滑动 / 旋转 / 倾斜)点击事件(单击 / 长按 / POI 点击)、UI 控件(指南针 / 比例尺)、缩放范围限制、显示区域限制、相机视角控制(含动画)、坐标转换(屏幕 ↔ 经纬度)、地图截图
📍 覆盖物 点标记 Marker / InfoWindow、折线 Polyline(折线、虚线、纹理线等)、多边形 Polygon(简单多边形,带洞多边形,纹理边框等)

 


✨ PART 03 · 腾讯位置服务Flutter插件亮点

腾讯位置服务Flutter插件不是简单地把原生 API「翻译」一遍,而是围绕 Flutter 的声明式范式做了系统性的工程设计。

亮点 1 · 接入快

双端零配置接入,开箱即用

无论 Android 还是 iOS 都无需手动配 SDK 依赖、无需改原生工程文件,双端统一零配置,把接入成本压到最低。

  • Android:工具包已发布至 Maven 中央仓库,构建工具自动拉取,无需手动配置
  • iOS:依赖声明文件自动处理,执行依赖安装即用
  • Key 与隐私合规:统一在 Dart 层传入

亮点 2 · 代码省

声明式 API,贴合 Flutter 范式

覆盖物(点标记 / 折线 / 多边形 / 圆形)采用声明式管理,只需描述"想要什么状态",插件自动对比差异、只同步变化部分,状态清晰、性能更好、代码更简洁。

同时数据模型均为不可变设计,契合 Flutter 习惯。

亮点 3 · 走得远

Compat分层架构,从容应对多版本

用户设备上的地图 SDK 版本可能不一样,而插件则是以最低版本为编译基准(Android 5.9.0 / iOS 5.7.7),通过 Compat 分层 + 启动时能力检测缓存兼容到最新版:

技术架构

业务代码
  → XxxCompat(统一接口,按版本分支)
    → SdkCompat(启动时检测一次并缓存)
      → TencentMap SDK(5.9.0 ~ 最新版)

检测只在启动时做一次,运行时走纯 if/else,零反射开销;新增差异点只需改 Compat 文件,不污染业务代码。

亮点 4 · 适配准

渲染模式自动选择,用户可选

不必纠结 Android 的两种渲染方式怎么选,插件默认自动按系统版本为你选择最优模式,同时也支持强制指定——既兼顾性能与兼容性,又把选择权交回开发者手中,灵活适配各类机型与场景。

enum AndroidViewMode { auto, surfaceView, textureView }

亮点 5 · 跑得稳

初始化时序内部封装,平台细节双端一致

地图 SDK 初始化步骤有严格顺序要求,顺序错误会导致白屏或崩溃等问题。

隐私合规 ➡️ SDK启动 ➡️ API key ➡️ 创建地图,插件将正确的初始化时序封装在内部,开发者无需操心。同时坐标系、覆盖物渲染等双端差异也一并细致封装与对齐,同一份代码彻底双端一致。

 


📊 PART 04 · 接入前后,开发者省了什么

告别6件烦心事,Flutter插件提高开发者生产力

你以前要操心的 用了这套插件后
❌ 手写 MethodChannel 逐个桥接原生 API ✅ 官方封装好,直接调 Dart API
❌ Android 配依赖、配仓库、改 Manifest ✅ 双端零配置,添加依赖即用
❌ iOS 改 AppDelegate 初始化 SDK ✅ Key 与隐私合规统一 Dart 层传入
❌ 自己处理 Android / iOS API 差异 ✅ 上层代码双端一致,差异内部消化
❌ 命令式增删覆盖物、手动管状态 ✅ 声明式 + 增量更新,状态可预测
❌ 担心插件长期维护与更新节奏 ✅ 官方出品,持续迭代有保障

💡 一句话总结:你写业务,跨端的复杂度交给官方插件。


您在使用过程中有任何问题,
都可前往腾讯位置服务官网「提交工单」
您还可以点击下方小程序,
一键成为腾讯位置服务开发者!

Logo

一站式 AI 云服务平台

更多推荐