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

时间:2019-01-30 14:02:13

标签: ios google-maps flutter

我正在使用Google Maps插件来扑朔迷离:https://pub.dartlang.org/packages/google_maps_flutter

对于Android,该应用程序在物理设备和模拟器上显示地图和制造商,但是在iPhone的模拟器上,我仅在灰色屏幕上看到标记,如图像中所示。

enter image description here

我尝试使用与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)
  }
}

在信息列表中:

<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模拟器上不起作用?

3 个答案:

答案 0 :(得分:1)

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

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

  2. 确保您的捆绑软件ID名称与您的控制台设置捆绑软件ID名称相符。

答案 1 :(得分:0)

您是否激活了模拟器上的位置?

答案 2 :(得分:0)

请记住,此插件是0.2版的开发人员预览版。许多事情可能还没有解决。