几天来我一直在使用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 不起作用,为什么地图变灰?任何回应将不胜感激
答案 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);