用于颤振的 GoogleMaps 插件仅显示 ios 模拟器上的标记

Posted

技术标签:

【中文标题】用于颤振的 GoogleMaps 插件仅显示 ios 模拟器上的标记【英文标题】:GoogleMaps plugin for flutter shows only the markers on ios simulator 【发布时间】:2019-06-23 20:08:20 【问题描述】:

我正在使用谷歌地图插件进行颤振:https://pub.dartlang.org/packages/google_maps_flutter

对于 android,应用程序在物理设备和模拟器上显示地图和制造商,但在 iPhone 的模拟器上,我只能看到灰屏上的标记。

我正在尝试使用 API 中的不同密钥,但似乎没有一个可以工作。

这是 ios 的代码(我找不到 AppDelegate.m,所以我添加到 AppDelegate.switf):

import UIKit
import Flutter
import GoogleMaps

@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate 
  override func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?
  ) -> Bool 
    GeneratedPluginRegistrant.register(with: self)
        GMSServices.provideAPIKey("MY_KEY")  // Add this line!
    return super.application(application, didFinishLaunchingWithOptions: launchOptions)
  

在 Info.plist 中:

<key>io.flutter.embedded_views_preview</key>
    <string>YES</string>

以及 Flutter 小部件代码:

import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:father_home_flutter/model/constants.dart';
import 'package:father_home_flutter/model/grown_group_list.dart';
import 'package:father_home_flutter/model/grown_group.dart';
import 'package:father_home_flutter/model/list_church_data.dart';
import 'package:father_home_flutter/model/church_data.dart';

class MapScreen extends StatefulWidget 
  @override
  State<StatefulWidget> createState() => new _MapScreenState();


class _MapScreenState extends State<MapScreen> 
  final List<GrownGroup> listGroups = GrownGroupList.getGrownList();
  final List<ChurchData> listChurch = ListChurchData.getListChurch();

  GoogleMapController mapController;
  final LatLng _center = const LatLng(55.751244, 37.618423);

  void _onMapCreated(GoogleMapController controller) 
    mapController = controller;

    //shows group list on a red marker
    for (int i = 0; i < listGroups.length; i++) 
      mapController.addMarker(MarkerOptions(
          position: listGroups[i].latLng,
          infoWindowText: InfoWindowText(
              listGroups[i].name + " " + listGroups[i].hour,
              listGroups[i].phoneNumber)));
    

    //shows church on a blue marker

    for (int i = 0; i < listChurch.length; i++) 
      mapController.addMarker(MarkerOptions(
          icon: BitmapDescriptor.defaultMarkerWithHue(BitmapDescriptor.hueBlue),
          position: listChurch[i].latLng,
          infoWindowText:
              InfoWindowText(listChurch[i].name, listChurch[i].schedule)));
    
  

  @override
  Widget build(BuildContext context) 
    return Scaffold(
      appBar: AppBar(
        title: Text(
          'Найти нас',
          style: Constants.myTextStyleAppBar,
        ),
        elevation: Constants.myElevationAppBar,
        backgroundColor: Constants.myAppBarColor,
        iconTheme: Constants.myIconThemeDataAppBar,
      ),
      body: SafeArea(
          child: GoogleMap(
        onMapCreated: _onMapCreated,
      )),
    );
  

任何人都可以帮助我或解释为什么这在 iOS 模拟器上不起作用?

【问题讨论】:

【参考方案1】:

当我遇到这个问题时有两个可能的问题。

    确保您已在您的 api 控制台“https://console.cloud.google.com/google/maps-apis/.......”中启用“Maps SDK for iOS”

    确保您的包 ID 名称与您的控制台设置包 ID 名称匹配。

【讨论】:

这已为我解决了!【参考方案2】:

你激活模拟器上的位置了吗?

【讨论】:

是的,已激活,我尝试在 Debug - Location 中进行更改,并尝试了所有选项,但地图仍然是灰色的。【参考方案3】:

请记住,此插件是 0.2 版的开发者预览版。许多事情可能还没有奏效。

【讨论】:

以上是关于用于颤振的 GoogleMaps 插件仅显示 ios 模拟器上的标记的主要内容,如果未能解决你的问题,请参考以下文章

使用 PhoneGap 和 googlemaps 插件更新位置跟踪的标记位置

颤振| Android Gradle插件仅支持Kotlin Gradle插件版本1.3.0及更高版本

信用卡扫描仪 - 颤振

跨平台颤振 - 如何处理依赖关系?

即使启用了 Web 支持,如何仅为 android 和 IOS 创建颤振项目?

Firebase 消息传递仅在调试模式下工作,而不是在发布模式下工作 (iOS)