MapBox设置样式回调有时不起作用,并且Mapbox地图变成灰色

时间:2019-10-17 14:40:40

标签: android kotlin mapbox

几天来我一直在使用mapbox api。我已经在OnCreate()方法中设置了地图框。大部分时间都会加载地图,并且 map.setStyle 可以工作,但有时未加载样式,地图会变成灰色。我已经阅读了mapbox api的文档。它说,如果mapboxMap.setStyle失败,则会调用 addOnDidFailLoadingMapListener()

以下是我的代码:

    mapView = findViewById(R.id.mapView)
    mapView.onCreate(savedInstanceState)

    //This is mapboxMap.setStyle failure callback
    mapView.addOnDidFailLoadingMapListener {
        Toast.makeText(this, it, Toast.LENGTH_LONG).show()
    }

    mapView.getMapAsync { mapboxMap ->

        mapboxMap.setStyle(Style.MAPBOX_STREETS) {

            // Map is set up and the style has loaded. Now you can add data or make other map adjustments
            style ->
    //This Does not work sometimes and map becomes grey

        }

    }

mapBoxmap.setStyle 未设置样式,然后又未触发 addOnDidFailLoadingMapListener 时,我已经进行了测试。有什么想法为什么 mapBoxmap.setStyle 不起作用,为什么地图变灰?任何回应将不胜感激

2 个答案:

答案 0 :(得分:0)

您是否设置了所需的访问令牌?如果没有,那可能是一个问题。也许需要访问令牌才能检索地图框。

// Mapbox access token is configured here. This needs to be called either in your application
// object or in the same activity which contains the mapview.
Mapbox.getInstance(this, getString(R.string.access_token));

答案 1 :(得分:0)

在我的情况下,在加载mapView之前先调用onStart()和onResume(),所以我添加了一个nullcheck:

public void onResume() {
    if (this.mapView != null) {
        this.mapView.onResume();
    }

很明显,这意味着mapView.onStart()和onResume()最初不会被调用,因为在触发onStart()时不会加载MapView。因此,我一次手动调用它们,效果很好:

    this.mapView = (MapView)this.myMapView.findViewById(id.mapView);
    this.mapView.onStart();
    this.mapView.onResume();
    this.mapView.getMapAsync(this);