如何更改 GoogleMap 小部件的Google徽标(最初位于左下角)和其他地图按钮(位置、放大/缩小等)的位置?
我还想知道您是否可以禁用/启用它们。
我正在使用google_maps_flutter 包版本^0.5.19
。
如何更改 GoogleMap 小部件的Google徽标(最初位于左下角)和其他地图按钮(位置、放大/缩小等)的位置?
我还想知道您是否可以禁用/启用它们。
我正在使用google_maps_flutter 包版本^0.5.19
。
我找到了一种解决方法,不是我猜的最佳解决方案,但应该可以
只需向 GoogleMap() 小部件添加填充,根据需要设置底部和左侧值
new GoogleMap(
padding: EdgeInsets.only(bottom: 100, left: 15), // <--- padding added here
// rest of parameters
// ....
)
笔记 !!
如果您从屏幕中心的某个点选择位置,向 GoogleMap() 添加填充应该会影响/更改所选择位置的值。考虑到这一点。
谢谢
谷歌已经为您简化了这一点,改编自 Rami 答案,您只需执行以下操作即可为您的地图添加填充
GoogleMap(
myLocationEnabled: true,
padding: EdgeInsets.only(bottom: mapBottomPadding, top: 0, right: 0, left: 0),
myLocationButtonEnabled: true,
compassEnabled: true,
mapToolbarEnabled: true,
mapType: MapType.normal,
markers: _markers,
initialCameraPosition: _kLake,
onMapCreated: (GoogleMapController controller) {
_controller.complete(controller);
mapController = controller;
setState(() {
mapBottomPadding = 280;
_goToTheLake();
});
},
),
地图相机目标会根据应用于地图的左侧、顶部、右侧或底部的填充进行相应调整。
希望这可以帮助。
显然没有直接/可靠的方法可以做到这一点,即使您可以以某种方式使用 Stack 来覆盖该徽标,您也不应该这样做。
在 Google Playstore 上上传您的应用时,您可能会遇到麻烦。
如果您不关心道德价值观,请阅读以下内容:
9.4 归属。
(a) 通过服务提供给您的内容可能包含 Google、其合作伙伴或 Google 索引内容的其他第三方权利持有人的商号、商标、服务标记、徽标、域名和其他独特的品牌特征。当 Google 提供此归属时,您必须按照通过服务提供的或 Maps API 文档中的说明显示它,并且不得删除或以任何方式更改这些商号、商标、服务标记、徽标、域名和其他独特品牌特征。
https://developers.google.com/maps/terms
谷歌已经提供了广泛的免费和免费增值服务,从字体到……再到……再到 Flutter。想象一下,如果你不是谷歌,如果你发现有人试图滥用你的应用程序的免费服务,而这实际上会让你花钱,你会怎么做。
如果您只想重新定位图标,请在按住 Ctrl 的同时将鼠标悬停在 GoogleMap() 上,然后在文本变为蓝色时右键单击来编辑该包的源代码。将出现一个带有 GoogleMap 小部件源代码的新窗口,您可以在其中检查和编辑如何指定徽标的位置,但我不能保证允许您这样做。
正如此GitHub 问题(自 2020 年 7 月 22 日开放)所提到的,在为 Google 地图徽标(或其他地图按钮)设置填充时,您必须使用StatefulWidget
and方法。setState()
如果不调用setState()
,则填充将无法在 Android 上正确应用。这似乎是原生 Android Maps SDK 的一个问题,因为 React Native 的 Google Maps 包中也会出现同样的填充问题。
根据Google Maps Platform 服务条款,您必须始终在您的 Google 地图上显示 Google 徽标,因此您无法在没有解决方法的情况下将其删除。但是,您可以删除 Google 地图上的其他按钮,例如位置和放大/缩小按钮。
请参阅下面的示例,了解 Google 地图徽标上的填充实现,以及删除位置和放大/缩小按钮:
GoogleMap(
//padding parameter for positioning the Google logo and other map buttons
padding: EdgeInsets.only(
bottom: 120,
),
//remove zoom in/out buttons
zoomControlsEnabled: false,
//remove location button
myLocationButtonEnabled: false,
initialCameraPosition: CameraPosition(
target: _center,
zoom: 12.0,
),
onMapCreated: (GoogleMapController controller) {
//required to apply padding correctly on Android
setState(() {});
},
)
要查找有关GoogleMap
小部件参数的更多信息,请查看google_maps_flutter 包文档。