Flutter:如何启动带有“方向”的谷歌Map应用程序到预定义的位置?

ygya80vv  于 2023-01-27  发布在  Flutter
关注(0)|答案(2)|浏览(139)

在我的flutter代码中,我在一个预定义的位置启动GoogleMaps应用程序,点击一个按钮。

_launchMaps(double lat, double lon) async {
  String googleUrl =
    'comgooglemaps://?center=${lat},${lon}';
  String appleUrl =
    'https://www.google.com/maps/search/?api=1&query=$lat,$lon';
  if (await canLaunch("comgooglemaps://")) {
    print('launching com googleUrl');
    await launch(googleUrl);
  } else if (await canLaunch(appleUrl)) {
    print('launching apple url');
    await launch(appleUrl);
  } else {
    throw 'Could not launch url';
  }
}

在iOS中,我确实在info.plist文件中添加了以下代码行

<key>LSApplicationQueriesSchemes</key>
    <array>
        <string>googlechromes</string>
        <string>comgooglemaps</string>
    </array>

Android中,当我点击按钮时,我会打开谷歌Map,我可以清楚地看到“方向”按钮,我可以点击并开始导航。

在iOS中,我打开了谷歌Map,位置被标记,但我没有得到“方向”按钮或类似的东西,所以我可以开始导航。我该如何解决这个问题?

0ve6wy6x

0ve6wy6x1#

如文档中所述,您需要在URL上定义起点lat/long和终点lat/long以提示方向导航。URL应类似于:
comgooglemaps://?saddr={LAT},{LONG}&daddr={LAT},{LONG}&directionsmode=driving

lmvvr0a8

lmvvr0a82#

//open google map & apple map app

String appleUrl = 'https://maps.apple.com/?saddr=&daddr=$lat,$lon&directionsmode=driving';
String googleUrl = 'https://www.google.com/maps/search/?api=1&query=$lat,$lon';

if (Platform.isIOS) {
  if (await canLaunch(appleUrl)) {
    await launch(appleUrl);
  } else {
    if (await canLaunch(googleUrl)) {
      await launch(googleUrl);
    } else {
      throw 'Could not open the map.';
    }
  }
} else {
  if (await canLaunch(googleUrl)) {
    await launch(googleUrl);
  } else {
    throw 'Could not open the map.';
  }
}

还有:

// Android
var url = 'geo:$latitude,$longitude';
if (Platform.isIOS) {
  // iOS
  String query = Uri.encodeComponent(address);
  url = 'https://maps.apple.com/?q=$query';
}
if (await canLaunch(url)) {
  await launch(url);
} else {
  throw 'Could not launch $url';
}

相关问题