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

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

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

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

PART 01

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

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

# 核心能力一览

能力

说明

Android

iOS

连续定位

可订阅的位置流,支持设置回调间隔、坐标系、返回等级、逆地址解析等参数

单次定位

一次性获取当前定位结果,可配置超时时长

地理围栏

圆形 / 多边形 / 行政区划三种形态,支持进入 / 离开 / 停留事件回调

设备朝向

订阅式获取真北方向、磁北方向等朝向信息

设备状态

随连续定位一并产生 GPS / Wi-Fi / 蜂窝 / 定位总开关等状态变化事件

前台定位服务

让定位在应用进入后台时也能继续运行

工具方法

坐标系互转、两点距离计算、点是否落在指定圆内等通用工具

多实例

同一应用内可创建多个定位 / 围栏管理器,事件流互不干扰

# 一段代码看懂接入

DART CODE

import 'package:tencent_location_flutter_plugin/tencent_location_flutter_plugin.dart';Future 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('当前位置:

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分层架构,从容应对多版本

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

TECH NOTE

业务代码

→ XxxCompat(统一接口,按版本分支)

→ SdkCompat(启动时检测一次并缓存)

→ TencentMap SDK(5.9.0 ~ 最新版)

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

# 亮点 4 · 适配准

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

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

DART CODE

enum AndroidViewMode { auto, surfaceView, textureView }

# 亮点5 · 跑得稳

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

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

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

PART 04

接入前后,开发者省了什么

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

你以前要操心的

用了这套插件后

c手写 MethodChannel 逐个桥接原生 API

✅ 官方封装好,直接调 Dart API

Android 配依赖、配仓库、改 Manifest

✅ 双端零配置,添加依赖即用

iOS 改 AppDelegate 初始化 SDK

✅ Key 与隐私合规统一 Dart 层传入

自己处理 Android / iOS API 差异

✅ 上层代码双端一致,差异内部消化

命令式增删覆盖物、手动管状态

✅ 声明式 + 增量更新,状态可预测

担心插件长期维护与更新节奏

✅ 官方出品,持续迭代有保障

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

您在使用过程中有任何问题

都可前往腾讯位置服务官网「提交工单」

您还可以点击下方小程序

一键成为腾讯位置服务开发者!

文章来源于腾讯云开发者社区,点击查看原文