OnMapLoaded永远不会在Android上调用

时间:2017-07-08 23:10:26

标签: android google-maps google-api

我想知道地图何时完成加载以淡入地图,但我无法触发(viewController as? HasTableView)?.tableView?.reloadData() 回调。我使用if (n > x.length) {slideIndex = x.length} 并且我看到一切正常,但仍无法正常工作。 function showDivs(n) { var i; var x = document.getElementsByClassName('slide'); if (n > x.length) {slideIndex = x.length} if (n < 1) {slideIndex = 1;} for (i = 0; i < x.length; i++) { x[i].style.display = 'none'; } x[slideIndex-1].style.display = 'block'; } 无效!

以下是我的OnMapLoaded()代码:

SupportMapFragment

然后我的OnMapReady

onCreate()

我的protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); supportRequestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY); setContentView(R.layout.activity_map); View map = findViewById(R.id.map); map.setAlpha(0); createLocationRequest(); getInstanceGoogleAPIClient(); updateValuesFromBundle(savedInstanceState); SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() .findFragmentById(R.id.map); mapFragment.getMapAsync(this); }

OnMapReady()

我的@Override public void onMapReady(GoogleMap googleMap) { mMap = googleMap; mMap.setOnMapLoadedCallback(this); try { boolean success = googleMap.setMapStyle( MapStyleOptions.loadRawResourceStyle( this, R.raw.map_style)); if (!success) { Log.e(TAG, "Style parsing failed."); } } catch (Resources.NotFoundException e) { Log.e(TAG, "Can't find style. Error: ", e); } } 标题:

OnMapLoaded()

4 个答案:

答案 0 :(得分:2)

来自the documentation

  

如果由于连接问题导致地图永远不会加载,或者由于用户经常与地图进行交互而导致地图不断变化并且永远不会完成加载,则不会触发此事件。

因此,请检查连接并确保地图处于空闲状态。

答案 1 :(得分:1)

请按照以下步骤操作:

1)实现GoogleMap.OnMapLoadedCallback。

当地图准备好使用时的回调界面。

2)onMapReady方法

@Override
    public void onMapReady(GoogleMap googleMap) {
        Log.d(TAG, "OnMapReady");
        mMap = googleMap;
        mMap.setOnMapLoadedCallback(this);

3)加载地图时onMapLoaded()调用。

public void onMapLoaded() {
       //loaded
    }

请检查第2点是否重要。

答案 2 :(得分:0)

我解决了这个问题。问题是,正如文件所说:

  

如果由于连接问题导致地图永远不会加载,或者由于用户经常与地图进行交互而导致地图不断变化并且永远不会完成加载,则不会触发此事件。

我不断改变位置并且从未完成加载,这就是为什么onMapReady从未被调用过的原因。谢谢你的答案!

答案 3 :(得分:0)

目前,我有一个类似的问题。我将启动时的地图可见性设置为GONE并显示进度条。如果地图具有此可见性,则它将永远不会开始呈现,并且setOnMapLoadedCallback将永远不会被触发。解决方案是将可见性设置为INVISIBLE,并且回调按预期方式工作。