乾坤框架中子系统使用百度地图三维地图无法显示的问题

这篇具有很好参考价值的文章主要介绍了乾坤框架中子系统使用百度地图三维地图无法显示的问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

乾坤框架子系统调用百度地图,使用vue-baidu-map组件只有卫星和普通模式,没法实现三维地图,所以只能改为原始的加载百度地图的api,这里最好使用懒加载方式,创建一个BMPGL.js。

export function BMPGL(ak) {
    return new Promise(function(resolve, reject) {
      window.init = function() {
        // eslint-disable-next-line
        resolve(BMapGL)
      }
    

      const script = document.createElement('script')
      script.type = 'text/javascript'
      script.src = `https://api.map.baidu.com/api?v=1.0&type=webgl&ak=${ak}&callback=init`
      script.onerror = reject
      document.head.appendChild(script)
    })
}

页面引用import { BMPGL } from "@/api/map/bmapGL.js";

方法调用

init3DMap(){
          const that = this
          this.tdMapBox=true;
          var my_BMPGL = BMPGL
          // 传入密钥获取地图回调。
          BMPGL(this.ak).then((BMapGL) => {
              // 创建地图实例
              let map = new BMapGL.Map("threeDMap");
              // 初始化地图,设置中心点坐标和地图级别
              map.centerAndZoom({lng:this.center.lng,lat:this.center.lat}, 19);
              //开启鼠标滚轮缩放
              map.enableScrollWheelZoom(true);
              //方向
              map.setHeading(64.5);
              //倾斜角度
              map.setTilt(73)
              //设置天空颜色
              map.setDisplayOptions({
                  skyColors: ['rgba(186, 0, 255, 0)', 'rgba(186, 0, 255, 0.2)']
              })
              //地图加载完成事件
              map.addEventListener('tilesloaded', function () {
                  console.log('地图加载完成!')
              });
              // 保存数据
              this.myMap = map;
          })
          .catch((err) => {
              console.log('加载三维地图错误',err);
          });
        },

如此在子应用中就能够正常显示百度三维地图。

但是发布后在系统中测试却看不到地图,一篇空白,调试发现<di id="threeDMap"></div>中竟然是空的,啥也没有。

网上查找说是系统中调用地图api时,BMPGL.js中window.init()的window已经不是子框架中的window了,网络中api虽然调用了,但返回的window对象中根本没有BMPGL对象。init3DMap也根本没有作用,连catch都进不去。

后来看到帖子说可以把主框架的window传到子框架中,在BMPGL.js中使用主框架的window来初始化,但看到传对象的步骤太过复杂,劝退了。

上一个帖子中百度编辑器中跨端处理的经验,可以借鉴。

这里先在主框架中调用BMPGL.js,然后在主框架main.js中初始化全局BMPGL

import { BMPGL } from "@/api/map/bmapGL"

 设置全局对象

window.BMPGL = BMPGL

在子框架中做判断这里在init3DMap方法就只拿部分代码修改如下

init3DMap(){
          const that = this
          this.tdMapBox=true;
          var my_BMPGL = BMPGL
          // 传入密钥获取地图回调。
          //判断是否在框架系统中
          if(window.__POWERED_BY_QIANKUN__){
            my_BMPGL = window.BMPGL;
          }
          else{
            my_BMPGL = BMPGL
          }
          my_BMPGL(this.ak).then((BMapGL) => {
            console.log('三维地图初始化ok');
            ///......这里跟上面一样......
          }
}

这样就能正常初始化出三维地图啦。文章来源地址https://www.toymoban.com/news/detail-688053.html

到了这里,关于乾坤框架中子系统使用百度地图三维地图无法显示的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue中使用百度地图

    3.在页面使用 4.百度地图初始化函数及批量生成自定义图标点 5.需求1:切换中心点 6.需求2:鼠标滑过自定义图标改变 需求3:鼠标滑过展示信息窗口

    2024年02月14日
    浏览(45)
  • vue 使用百度地图记录

    参考文档 https://lbsyun.baidu.com/index.php?title=jspopular3.0/guide/infowindow https://lbsyun.baidu.com/cms/jsapi/reference/jsapi_reference_3_0.html#a0b0 参考链接:https://api.map.baidu.com/library/MarkerClusterer/1.2/docs/symbols/BMapLib.MarkerClusterer.html 下载这个js

    2024年02月13日
    浏览(37)
  • 【QT--使用百度地图API显示地图并绘制路线】

    先吐槽一下下,本身qt学的就不咋滴,谁想到第一件事就是让写一个上位机工具,根据CAN总线传来的位置信息,在地图上去绘制路线,并获取当前路段的限速信息等。当听到这个需求的时候,第一时间是有点懵逼的。自己原本是没接触过这方面的知识,而且qt学的也特别的垃圾

    2024年01月24日
    浏览(44)
  • 在小程序中使用百度地图

    进入百度开放平台官网,点击右上角“API控制台”,注册成为百度地图开发者。 进入控制台,创建一个新应用。填写相应信息时,应用类型选择【微信小程序】,APPID填写小程序开发者ID。 点击提交后,即可在查看应用页面看到申请成功的密钥(AK)。 在项目根目录下新建一

    2023年04月09日
    浏览(36)
  • 百度地图API的使用(附案例)

    百度地图JavaScript API是一套由JavaScript语言编写的应用程序接口,可帮助您在网站中构建功能丰富、交互性强的地图应用,支持PC端和移动端基于浏览器的地图应用开发,且支持HTML5特性的地图开发。 在控制台里选择创建应用 选择浏览器端,白名单输入* 我们直接把文档内的代码

    2024年02月06日
    浏览(100)
  • vue3使用百度地图(详)

    提示:该博客vue采用vue3,使用百度地图通过组件 vue-baidu-map-3x : 组件官网:https://map.heifahaizei.com/doc/baidu-map.html 下面会从头开始介绍如何使用百度地图以及常用组件功能(附带遇到的问题和解决方案) 步骤:1. 进入百度地图开放平台 | 百度地图API SDK | 地图开发 2.打开顶部控制

    2024年02月06日
    浏览(55)
  • vue项目中使用百度地图(一)

    vue+百度地图的基础使用。 首先,第一步申请key,保存好这个密钥。 链接:jspopular | 百度地图API SDK (baidu.com) 使用百度地图有两种方式:1.javaScript API    2.直接引用组件。 以2.0版本为例。 方法1:百度地图javaScript API 引入方式有两种。 方法1:index.html中引用 在想要展示地图的

    2024年02月12日
    浏览(42)
  • vue3 中使用百度地图

    最近一个项目要用到地图,因为微信小程序用的也是百度地图,所以想着网页端也用百度地图,在网上查了很多方法,包括引入百度地图第三方库,还是有问题,发现最简单的方法就是在index.html中引入script,然后直接在相关页面肝就完事。 在百度开发者平台上面申请,其他

    2023年04月17日
    浏览(51)
  • vue项目中使用百度地图,详细过程

    简述:我们在写项目的时候,有时候难免会用到地图,这里给大家介绍一下如何在vue项目中使用百度地图,获取可视区域坐标,以及添加线路、站点。 1、 首先,在项目中安装百度地图依赖。 2、 全局注册,在main.js中一次性引入百度地图组件库的所有组件,  //   ak 是在百

    2023年04月15日
    浏览(43)
  • 在 Swift 中使用百度地图 SDK

    写在前面 百度地图 SDK提供了一套功能很强大的地图框架使用接口,它不仅提供构建地图的基本接口,还提供POI搜索、地理编码、路线规划、定位、本地覆盖物绘制等服务。而由于百度地图SDK官方网站 上给出的使用说明是使用 Objective-C 语言以及 Xcode 4来进行开发的,很多朋友

    2024年02月03日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包