You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中使用launchUrl打开谷歌地图时如何显示地名而非坐标

Flutter谷歌地图显示地名而非坐标的解决方法

方案1:通过逆地理编码获取地名后打开地图

先把经纬度转换为对应地名,再将地名作为搜索参数传入谷歌地图链接,确保地图显示具体名称。

步骤:

  1. 在pubspec.yaml中添加geocoding依赖:
dependencies:
  geocoding: ^2.1.1
  1. 实现逆地理编码并打开地图的代码:
import 'package:geocoding/geocoding.dart';
import 'package:url_launcher/url_launcher.dart';

Future<void> openMapWithPlaceName(double locationLat, double locationLong) async {
  // 根据经纬度获取地点信息
  List<Placemark> placemarks = await placemarkFromCoordinates(locationLat, locationLong);
  if (placemarks.isNotEmpty) {
    Placemark targetPlace = placemarks.first;
    // 拼接完整地名(可根据需求调整字段)
    String placeName = "${targetPlace.street ?? ''}, ${targetPlace.locality ?? ''}, ${targetPlace.country ?? ''}".replaceAll(RegExp(r',\s*,'), ',');
    // 编码地名避免特殊字符导致链接失效
    String encodedName = Uri.encodeComponent(placeName);
    Uri mapUri = Uri.parse('https://www.google.com/maps/search/?api=1&query=$encodedName');
    if (await canLaunchUrl(mapUri)) {
      await launchUrl(mapUri, mode: LaunchMode.externalApplication);
    }
  }
}

方案2:使用谷歌地图的地图中心定位链接

如果不想引入第三方包,可改用直接定位经纬度中心的URL格式,谷歌地图通常会自动解析并显示该位置的地名:

launchUrl(
  Uri.parse('https://www.google.com/maps/@?api=1&map_action=map&center=${locationLat},${locationLong}&zoom=15'),
  mode: LaunchMode.externalApplication
);

注:此方案的效果依赖谷歌地图的本地数据收录情况,若该位置无地名数据,可能仍显示坐标。

内容的提问来源于stack exchange,提问作者Shanu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 08:26:17