Google maps 授予权限后重新加载我的位置按钮 背景
我正在使用google_maps_Flatter软件包来显示一张带有与房屋对应的标记的地图。为了避免设备过载,我只在用户看到的位置附近装载房屋。为了方便起见,我请求用户的位置,并将其提供给谷歌地图,以便显示“我的位置”按钮 问题 如果已授予位置访问权限,则它将按预期工作。如果地图已加载,“我的位置”按钮不会显示 目前,如果地图在屏幕上显示时授予了定位权限,我只需将相机移到他们的位置。这是一个不错的解决办法,但我宁愿让用户决定在哪里查找 在地图已加载的情况下授予权限时,如何加载按钮 尝试Google maps 授予权限后重新加载我的位置按钮 背景,google-maps,flutter,Google Maps,Flutter,我正在使用google_maps_Flatter软件包来显示一张带有与房屋对应的标记的地图。为了避免设备过载,我只在用户看到的位置附近装载房屋。为了方便起见,我请求用户的位置,并将其提供给谷歌地图,以便显示“我的位置”按钮 问题 如果已授予位置访问权限,则它将按预期工作。如果地图已加载,“我的位置”按钮不会显示 目前,如果地图在屏幕上显示时授予了定位权限,我只需将相机移到他们的位置。这是一个不错的解决办法,但我宁愿让用户决定在哪里查找 在地图已加载的情况下授予权限时,如何加载按钮 尝试 我试着只
@覆盖
小部件构建(构建上下文){
//授予权限时加载标记。
location.hasPermission().then((currPerm)异步{
如果(!currPerm){
bool newPerm=wait location.requestPermission();
if(newPerm){
LocationData数据=等待位置。getLocation();
(等待mapController.future)移动摄像机(CameraUpdate.newLatLng(LatLng(data.latitude,data.longitude));
}
}
});
谷歌地图=谷歌地图(
initialCameraPosition:CameraPosition(
目标:初始位置,
缩放:11.5,
),
myLocationEnabled:对,
myLocationButtonEnabled:正确,
流量启用:正确,
标记:标记,
onMapCreated:(newController)=>mapController.complete(newController),
onCameradle:()异步{
//相机停止移动时加载标记。
LatLngBounds bounds=await(await mapController.future).getVisibleRegion();
装载标记(
板条(
(bounds.northeast.latitude+bounds.southwest.latitude)/2,
(bounds.northeast.longitude+bounds.soutwest.longitude)/2
),
);
},
);
返回图;
}
从谷歌地图(^0.5.23+1
)开始,我通过给myLocationEnabled
分配一个变量并在获得位置权限后更改其值来解决此问题。如果你硬编码true
,它就是不起作用
GoogleMap=GoogleMap(
myLocationEnabled:_IsLocationEnabled,
...
因此,\u islocationgrated
最初是false
。当我获得位置权限时,我将其设置为true
,并重新生成小部件(通过调用setState()
,触发BlocBuilder()
,或您使用的任何方法)
另一个相关参数,
myLocationButtonEnabled:true
,似乎不需要此处理。没有代码,没有人可以回答您:'(请提供您正在谈论的代码。就这样。我希望这足够了。如果需要,我肯定可以添加额外的上下文。我认为这实际上是一个bug。没有理由不起作用。为什么不触发moveCamera,不管用户是否第一次授予权限?也许这就是为什么会显示您所使用的按钮。)你想要