【问题标题】:Google Maps Flutter谷歌地图颤振
【发布时间】:2020-07-19 15:33:36
【问题描述】:

如何使我的地图初始位置显示在其中心的标记? 我使用默认的初始相机位置:

LatLng _mapStartingPosition = LatLng(64.139015, -21.928318)
GoogleMap(
     mapToolbarEnabled: false,
     initialCameraPosition: CameraPosition(
          target: _mapStartingPosition,
          zoom: 11.0,
     ),
     markers: Set.from(allMarkers),
     circles: Set.from(allCircles),
     onMapCreated: (GoogleMapController controller) {
          _mapController.complete(controller);
     },
),

获得标记后,我根据标记的 LatLng 设置初始位置。

...
_mapStartingPosition = LatLng(item['latitude'], item['longitude']);
...

地图的位置更新成功,但不是在中心显示标记,而是始终显示在左上角。怎样才能居中?

相反,我想以这种方式展示它:

【问题讨论】:

    标签: google-maps flutter google-maps-markers


    【解决方案1】:

    你可以试试:

    GoogleMapController googleMapController;
          ....
          onMapCreated: (_googleMapController) {
            googleMapController = _googleMapController;
            _googleMapController.moveCamera(
              CameraUpdate.newLatLng(_mapStartingPosition)
            );
          },
    

    以及何时获得新职位

    ...
    _mapStartingPosition = LatLng(item['latitude'], item['longitude']);
    googleMapController.moveCamera(
                  CameraUpdate.newLatLng(_mapStartingPosition)
                );
    ...
    

    【讨论】:

    • 并没有真正改变任何东西。它始终在左上角显示标记。我认为这是谷歌地图处理 LatLng 的方式。如果我给它一个标记位置,它将把它作为一个锚点,然后根据从该点的缩放显示地图的其余部分。它不把它理解为一个中心。但我不确定,这只是我的理解。
    • 我找到了解决方法。我只是像这样修改经度: _mapStartingPosition = LatLng(item['latitude'], item['longitude'] - 00.01);它现在使标记居中,但老实说,我个人不喜欢这种解决方法。将继续挖掘更好的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-03
    • 1970-01-01
    • 1970-01-01
    • 2019-09-21
    • 1970-01-01
    • 2020-07-26
    • 2019-06-30
    相关资源
    最近更新 更多