Google 地图 .getMap() 已弃用

问题描述 投票:0回答:2

我在 Android 应用程序上使用 Google 地图。在 gradle 之前,新版本的 Google Play Services 会使用以下代码来获取 Fragment:

GoogleMap googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();

自从我更新到版本 9.2.1 以来,.getMap() 是红色的(已弃用)。是否有新的做法来声明片段?

感谢您的每一个回复?

java android gradle maps
2个回答
7
投票

您应该将 getMap() 替换为 getMapAsync()。

根据官方文档,获取地图异步需要回调,这是您执行主要谷歌地图操作的地方。看看下面的片段。

 public class MapPane extends Activity implements OnMapReadyCallback {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.map_activity);

    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);
}

@Override
public void onMapReady(GoogleMap map) {
//DO WHATEVER YOU WANT WITH GOOGLEMAP
 map.setMapType(GoogleMap.MAP_TYPE_HYBRID);
        map.setMyLocationEnabled(true);
        map.setTrafficEnabled(true);
        map.setIndoorEnabled(true);
        map.setBuildingsEnabled(true);
        map.getUiSettings().setZoomControlsEnabled(true);
    }
}

希望这对您有帮助。


1
投票

getMapAsync()
看起来很合适。不过,您必须调整您的实施。该调用是异步的,您不会立即获得地图。另一方面,您不会遇到问题,因为当您开始使用地图时,地图尚未加载。

© www.soinside.com 2019 - 2024. All rights reserved.