今天有个需求需要点击待着地址内容跳转到第三方地图
在网上找了不少资料,有一个大哥的挺方便的自己想跳转那个就调用就好了,封好了工具类
有一个局限性就是需要经纬度跳转如果没有经纬度的话是跳不了的
引入 url_launcher: ^6.1.7
需要在ios的info.plist文件添加
<key>LSApplicationQueriesSchemes</key>
<array>
<string>iosamap</string>
<string>qqmap</string>
<string>baidumap</string>
</array>
这里是工具类
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';
class MapUtil {
/// 高德地图
static Future<bool> gotoAMap(longitude, latitude) async {
var url = '${Platform.isAndroid ? 'android' : 'ios'}amap://navi?sourceApplication=amap&lat=$latitude&lon=$longitude&dev=0&style=2';
bool canLaunchUrl = await canLaunch(url);
if (!canLaunchUrl) {
//失败的话会调用这里的方法
return false;
}
await launch(url);
return true;
}
/// 腾讯地图
static Future<bool> gotoTencentMap(longitude, latitude) async {
var url = 'qqmap://map/routeplan?type=drive&fromcoord=CurrentLocation&tocoord=$latitude,$longitude&referer=IXHBZ-QIZE4-ZQ6UP-DJYEO-HC2K2-EZBXJ';
bool canLaunchUrl = await canLaunch(url);
if (!canLaunchUrl) {
return false;
}
await launch(url);
return canLaunchUrl;
}
/// 百度地图
static Future<bool> gotoBaiduMap(longitude, latitude) async {
var url = 'baidumap://map/direction?destination=$latitude,$longitude&coord_type=bd09ll&mode=driving';
bool canLaunchUrl = await canLaunch(url);
if (!canLaunchUrl) {
return false;
}
await launch(url);
return canLaunchUrl;
}
/// 苹果地图
static Future<bool> _gotoAppleMap(longitude, latitude) async {
var url = 'http://maps.apple.com/?&daddr=$latitude,$longitude';
bool canLaunchUrl = await canLaunch(url);
if (!canLaunchUrl) {
return false;
}
return canLaunchUrl;
await launch(url);
}
}