在onMapReady之后,getProjection().getVisibleRegion().latLngBounds返回0。

3
我正在尝试在Google地图初始化后从设备屏幕上的可见区域获取LatLngBounds,但是我只收到了0值。我猜测可能是因为地图实际上还没有加载完成,即使已经调用了OnMapReady方法。我已经到处寻找更好的检查地图初始化的方法,但是没有发现什么有用的信息。如何确保我接收正确的数据呢? 初始化地图
public void initMap(){
    MapFragment map = (MapFragment) getFragmentManager().findFragmentById(R.id.mapFragment);
    map.getMapAsync(this);
}

地图准备就绪回调函数

@Override
public void onMapReady(GoogleMap googleMap) {    

    try {
        if (googleMap != null) {
            mGoogleMap = googleMap;
            mGoogleMap.setOnMarkerClickListener(this);
            mGoogleMap.setOnCameraChangeListener(this);
            mGoogleMap.setOnMapClickListener(this);
            mGoogleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
            search();
        }

    } catch (Exception exception) {
        mUtility.getThemedAlert(this,
                getResources().getString(R.string.error_google_maps),
                getResources().getString(R.string.unable_build_google_maps)).show();
    }
}

获取范围

public void search() {
    LatLngBounds bounds = mGoogleMap.getProjection().getVisibleRegion().latLngBounds;
    Log.e("TEST", bounds.toString());
}

日志输出

E/TEST﹕ LatLngBounds{southwest=lat/lng: (0.0,0.0), northeast=lat/lng: (0.0,0.0)}

嗯,这不是好事...当你开始缩放地图时(获取纬度/经度边界),地图缩放到哪里了?你是否尝试过延迟调用(使用handlers.postDelayed或类似方法)进行一些测试,以测试是否存在时间问题? 如果您尝试通过代码移动相机,然后调用“search()”函数会怎样呢? 我的想法是,API仅在相机更改时设置边界,这将是一个需要解决的错误! - N Dorigatti
OnMapLoaded 怎么样?这应该在所有瓦片加载完成后调用。 - kaho
1个回答

1
OnMapLoaded函数是有帮助的。谢谢。
这是我的代码,
map.setOnMapLoadedCallback(new GoogleMap.OnMapLoadedCallback() {
                @Override
                public void onMapLoaded() {

                    invokeApi();
                }
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接