【问题标题】:Incompatible type of onMapReady() functiononMapReady() 函数的不兼容类型
【发布时间】:2016-10-07 10:39:55
【问题描述】:

我正在尝试将我的 OnMapReadyCallback 设置为获取地图异步参数。但是 android 告诉我它需要 GoogleMap 对象,在文档中 onMapReady() 是无效的。下面的代码

private void initilizeMap() {
    if (googleMap == null) {
        googleMap = ((MapFragment) getFragmentManager().findFragmentById(
                R.id.map)).getMapAsync(this);

        // check if map is created successfully or not
        if (googleMap == null) {
            Toast.makeText(getApplicationContext(),
                    "Sorry! unable to create maps", Toast.LENGTH_SHORT)
                    .show();
        }
    }
}

@Override
public void onMapReady(GoogleMap map) {
    map.setMapType(GoogleMap.MAP_TYPE_HYBRID);
    map.setTrafficEnabled(true);
    map.setIndoorEnabled(true);
    map.setBuildingsEnabled(true);
    map.getUiSettings().setZoomControlsEnabled(true);
}

【问题讨论】:

    标签: java android google-maps


    【解决方案1】:

    getMapAsync 不返回 GoogleMap 对象 (documentation)。您可以像这样初始化 googleMap 对象:

    private void initilizeMap() {
        ((MapFragment) getFragmentManager().findFragmentById(
                R.id.map)).getMapAsync(this);
    }
    
    @Override
    public void onMapReady(GoogleMap map) {
        googleMap = map;
        map.setMapType(GoogleMap.MAP_TYPE_HYBRID);
        map.setTrafficEnabled(true);
        map.setIndoorEnabled(true);
        map.setBuildingsEnabled(true);
        map.getUiSettings().setZoomControlsEnabled(true);
    }
    

    【讨论】:

    • 显然是一个答案,但 OP 不知道他想要什么,但要获取地图参考并调用异步函数,所以所有关于此的更多信息都会增加你的帖子,伙计 +1跨度>
    【解决方案2】:

    你可以试试这段代码。

     private void initilizeMap() {
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
        // check if map is created successfully or not
        if (googleMap == null) {
            Toast.makeText(getApplicationContext(),
                    "Sorry! unable to create maps", Toast.LENGTH_SHORT)
                    .show();
        }
    }
    
    @Override
    public void onMapReady(GoogleMap map) {
        googleMap = map;
        map.setMapType(GoogleMap.MAP_TYPE_HYBRID);
        map.setTrafficEnabled(true);
        map.setIndoorEnabled(true);
        map.setBuildingsEnabled(true);
        map.getUiSettings().setZoomControlsEnabled(true);
    }
    

    【讨论】:

    • 解释对 OP 老兄会有帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-19
    • 1970-01-01
    • 2019-07-28
    相关资源
    最近更新 更多