Flutter iOS Map 样式未应用

Posted

技术标签:

【中文标题】Flutter iOS Map 样式未应用【英文标题】:Flutter iOS Map styles not applied 【发布时间】:2021-02-08 15:01:33 【问题描述】:

我想在我的颤动地图中隐藏地图上的所有地标和其他指示符。我已经为谷歌地图包(google_maps_flutter)实现了地图样式。这种风格在 android 上显示得很好,但在 ios 上却不行。地图没有错误消息或任何异常。我希望能深入了解为什么会这样。我有最新版本的插件 1.0.3。下面是我的风格和 Flutter 医生的输出。

颤振风格

[
  
    "featureType": "administrative",
    "elementType": "geometry",
    "stylers": [
      
        "visibility": "off"
      
    ]
  ,
  
    "featureType": "poi",
    "stylers": [
      
        "visibility": "off"
      
    ]
  ,
  
    "featureType": "road",
    "elementType": "labels.icon",
    "stylers": [
      
        "visibility": "off"
      
    ]
  ,
  
    "featureType": "transit",
    "stylers": [
      
        "visibility": "off"
      
    ]
  
]

这是我的颤振医生

[✓] Flutter (Channel stable, 1.22.0, on Mac OS X 10.15.6 19G2021, locale en-ZA)
• Flutter version 1.22.0 at /Users/danemackier/flutter
• Framework revision d408d302e2 (4 weeks ago), 2020-09-29 11:49:17 -0700
• Engine revision 5babba6c4d
• Dart version 2.10.0



[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
    • Android SDK at /Users/danemackier/Library/Android/sdk
    • Platform android-29, build-tools 29.0.2
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b49-5587405)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 12.0.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.0.1, Build version 12A7300
    • CocoaPods version 1.9.1

[✓] Android Studio (version 3.5)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 44.0.1
    • Dart plugin version 191.8593
    • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b49-5587405)

[✓] VS Code (version 1.50.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.15.1

[✓] Connected device (1 available)
    • iPhone 11 Pro Max (mobile) • 400921E6-429C-44D7-B113-F979A171C48A • ios •
      com.apple.CoreSimulator.SimRuntime.iOS-14-0 (simulator)

• No issues found!

【问题讨论】:

【参考方案1】:

如果您尝试获取没有地标符号的地图:

    使用https://mapstyle.withgoogle.com/,您可以使用Web UI 设置地图样式并查看地图中的最终样式。如果滚动,您会看到一个 FINISH 按钮,然后会出现一个对话框,您可以在其中复制 JSON

    然后将该 json 粘贴到您的 Flutter 应用资产中的 .txt 文件中

    例如 assets/map_style.txt

    将 GoogleMap 放置在有状态的小部件中

声明:

String _mapStyle
GoogleMapController controller;

然后在初始化状态:

@override
 void initState() 
    rootBundle.loadString('assets/map_style.txt').then((string) 
      _mapStyle = string;
    );
    super.initState();
 

void _onMapCreated(GoogleMapController controller) 
    this.controller = controller;
    controller.setMapStyle(_mapStyle);

_onMapCreated 在参数 onMapCreated 中分配给 GoogleMap 小部件

【讨论】:

我完全按照您在此处提到的操作。那里显示的样式来自使用该样式。我要升级我所有的颤振版本。我仍在使用 1.22.0,因此它可能有助于升级、清理和运行新版本。我稍后会尝试。 没有。还没有,我在 git 上也有一个问题。 github.com/flutter/flutter/issues/69018

以上是关于Flutter iOS Map 样式未应用的主要内容,如果未能解决你的问题,请参考以下文章

未调用 Flutter Firebase 消息传递 iOS 处理程序

未定义命名参数“home” - Flutter

flutter 高德地图api使用 app内集成定位 地图搜索功能

Flutter - Firebase 云消息传递,iOS 上未收到数据消息

IOS工程Flutter白屏

IOS工程Flutter白屏