当前位置: 首页 > 知识库问答 >
问题:

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

苏波涛
2023-03-14

我已经在mapbox api上工作了几天。我一直在设置的映射框中的OnCreative()方法。大多数时候,地图被加载,map.set样式工作,但有时样式没有加载,地图变成灰色。我读过mapbox api的留档。它表示,如果mapbox Map.setStyle失败,那么addOndiFailLoadingMapListener()将被调用

以下是我的代码

    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个答案

武睿
2023-03-14

在我的例子中,onStart()和onResume()是在加载mapView之前调用的,因此我添加了一个空检查:

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);
斜烈
2023-03-14

您是否设置了所需的访问令牌?如果不是,这可能是一个问题。可能需要访问令牌来检索地图帧。

// 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));
 类似资料:
  • 我正在学习使用react和mapbox,但是我很难理解为什么我的mapbox贴图在通过react加载时不能正确渲染。当我正常加载它(没有React.js)时,没有问题,因为以下代码正常工作,并且映射正常显示: 但是当我按照下面的方法操作时,地图通常根本不会出现,或者当它出现时,我只在div的左上角看到它的一部分。 进行缩放或打开chrome开发者工具等操作似乎有时会使地图出现。我不知道发生了什么事

  • 我试图自定义我的MapBox地图为Android使用这里概述的样式规格表,但我得到一个源错误。 我当前的样式表是: 但我得到了这个错误,地图上的水景没有受到影响: 我无法找到使用Android MapBox自定义样式表的完整示例。你知道我为什么会犯这个错误吗?

  • 本文向大家介绍mapbox 安装或设置,包括了mapbox 安装或设置的使用技巧和注意事项,需要的朋友参考一下 示例 有关设置或安装mapbox的详细说明。

  • 我尝试将Mapbox与SwiftUI结合使用。 我https://stackoverflow.com/a/56551675/5653544应用了这个答案,也遵循了mapbox教程。 所以我有一个MapView.swift视图: 我的ContentView.swift调用MapView: 我还创建了一个~/。带有mapbox令牌的mapbox文件,该令牌由我的mapbox帐户获取。但我有一张空白地图

  • 我正在使用Mapbox,在我的本地主机中,它总是正确加载我的标记。然而,现在我部署了我的应用程序,它没有。 至少有时候, 我注意到,如果我加载页面,然后就在页面加载之前,我切换到另一个选项卡,然后等待5秒钟,然后回到我的应用所在的选项卡。它确实工作并加载标记。 此外,我得到的错误:当我试图设置一个功能状态(当你悬停在侧边栏项目上,在标记没有加载的情况下): 我还注意到在标记未加载时不触发,因为如果

  • 我在视图中使用mapbox,需要从JSON添加多个标记 这是我的JSON 下面是我如何运行脚本添加地图到视图 但是我想知道,我如何需要添加标记到map(对于json中的每个元素,我需要获得lat和lon)来映射。因为医生说我需要这样的Json var Geojson={type:'FeatureCollection',特性:[{type:'Feature',几何:{type:'Point',坐标: