jjzjj

【百度地图2.5D、3D在Vue项目中的使用】嵌入二维百度地图、三维百度地图、多种显示模式风格样式颜色的百度地图

你挚爱的强哥 2023-07-30 原文

rc\js\main.js

...


//  引入普通百度地图----------------------------------------npm install vue-baidu-map --save
import BaiduMap from 'vue-baidu-map';
Vue.use(BaiduMap, { ak: 'DvSp7Of3aqrGbjIsGqebqdPAmjhGDndf' });//这个百度APIkey密钥是用百度ID:16*******61注册的,如果要更改密钥权限找强哥!

// 引入3D百度地图----------------------------------------npm install vue-bmap-gl --save
import VueBMap from 'vue-bmap-gl';
import 'vue-bmap-gl/dist/style.css';
Vue.use(VueBMap);
VueBMap.initBMapApiLoader({
  ak: '***DvSp7Of3aqrGbjIsGqebqdPAmjhGDndf***',//这个密钥请使用自己注册的
  v: '1.0'
});


...

 src\vue\components\sgMap.vue

<template>
  <div class="sgMap-body">
    <!-- 引入百度地图 -->
    <div id="SGbaidu3Dmap" v-show="data.type == 3"></div>
    <baidu-map id="SGbaidumap" v-if="data.type != 3" @ready="initBaiduMap">
    </baidu-map>
  </div>
</template>

<script>
import custom_map_config from "@/json/custom_map_config";
export default {
  components: {},
  data() {
    return {
      map: null, // 百度地图对象
      // _MyMap: null,//瓦片图对象
    };
  },
  props: ["data"],
  mounted() {
    this.data.type == 3 &&
      setTimeout(() => {
        this.initBaidu3DMap();
      }, 2000);
  },

  methods: {
    initBaidu3DMap() {
      this.map = new BMapGL.Map("SGbaidu3Dmap");
      this.map.centerAndZoom(
        new BMapGL.Point(this.data.coordinate[0], this.data.coordinate[1]),
        this.data.zoom || 19
      );
      this.map.enableScrollWheelZoom(true); //启用滚轮放大缩小
      //设置3D角度----------------------------------------
      this.map.setHeading(64.5);
      this.map.setTilt(73);

      // 设置自定义mark点位________________________
      this.map.addOverlay(
        new BMapGL.Marker(
          new BMapGL.Point(this.data.coordinate[0], this.data.coordinate[1]),
          {
            icon: new BMapGL.Icon(
              require("@/assets/sgMap/mark.svg"),
              new BMapGL.Size(32, 32) //图标的宽高
            ),
          }
        )
      ); // 将标注添加到地图中
    },
    // 初始化百度地图
    initBaiduMap({ BMap, map }) {
      this.map = map;
      this.map.setMapStyle({ style: this.data.style || "googlelite" }); //默认:精简风格(googlelite),模板页可以查看http://lbsyun.baidu.com/custom/list.htm

      // 去这个位置编辑http://lbsyun.baidu.com/apiconsole/custommap个性化地图

      // this.map.setMapStyle({ styleJson: custom_map_config });
      // this._MyMap = new BMap.MapType('MyMap', this._tileLayer, {minZoom: minZoom || 1, maxZoom: maxZoom || window.maxZoom});
      // 设置地图显示类型----------------------------------------
      const mapTypes = [
        BMAP_NORMAL_MAP, //此地图类型展示普通街道视图
        BMAP_SATELLITE_MAP, //此地图类型展示卫星视图
        BMAP_HYBRID_MAP, //此地图类型展示卫星和路网的混合视图
      ];
      if (this.data.type == 3) {
        this.map.setHeading(64.5), this.map.setTilt(73);
        //3D地图
      } else this.map.setMapType(mapTypes[this.data.type]);

      // ----------------------------------------
      this.map.enableScrollWheelZoom(true); //启用滚轮放大缩小
      this.map.centerAndZoom(
        new BMap.Point(this.data.coordinate[0], this.data.coordinate[1]),
        this.data.zoom || 14
      ); // 初始化地图,设置中心点坐标和地图级别

      // 设置自定义mark点位________________________
      this.map.addOverlay(
        new BMap.Marker(
          new BMap.Point(this.data.coordinate[0], this.data.coordinate[1]),
          {
            icon: new BMap.Icon(
              require("@/assets/sgMap/mark.svg"),
              new BMap.Size(32, 32) //图标的宽高
            ),
          }
        )
      ); // 将标注添加到地图中
    },
  },
};
</script>

<style lang='scss' scoped>
@import "~@/css/sg";
// ----------------------------------------
.sgMap-body {
  transition: none;
  position: fixed;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  >>> #SGbaidumap,
  >>> #SGbaidu3Dmap {
    width: 100%;
    height: 100%;
    & > div {
      background-color: transparent !important;
    }
  }
}
/*
去除百度地图版权
去除右上角[地图、卫星、三维]控件
去除百度地图右上角平移缩放控件的市县区文字
*/
>>> .anchorBL,
>>> .anchorTR,
>>> .BMap_zlHolder {
  display: none;
  visibility: hidden;
}
</style>

src\vue\screen\index.vue

<template>
  <div class="index-body"> 
    <sgMap
      class="sg-map"
      :data="{
        coordinate: [118.869472, 28.975293],
        style: $route.query.style || 'midnight',
        type: $route.query.type || 0,
        zoom: $route.query.zoom || 16,
      }"
    />
  </div>
</template>

<script>
import sgMap from "@/vue/components/sgMap";
export default {
  components: {
    sgMap,
  }, 
};
</script>

<style lang='scss' scoped>
  .sg-map {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: -1;
  }
</style>

访问路径的时候带参数?type=0&style=midnight,显示二维地图 (午夜蓝风格)

模板页可以查看百度个性化地图 - 模板列表http://lbsyun.baidu.com/custom/list.htm去这个位置编辑个性化地图登录百度帐号百度帐号是登录所有百度系产品的通行证,登录后还可以在帐户管理页管理/修改您的个人信息,包括修改密码、绑定手机、身份认证等http://lbsyun.baidu.com/apiconsole/custommap

访问路径的时候带参数?type=0&style=grayscale,显示二维地图 (高端灰风格) 

  访问路径的时候带参数?type=1,显示实景地图

访问路径的时候带参数?type=2,显示实景地图(带有地名)

 访问路径的时候带参数?type=3,显示三维3D地图

有关【百度地图2.5D、3D在Vue项目中的使用】嵌入二维百度地图、三维百度地图、多种显示模式风格样式颜色的百度地图的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  3. ruby - 使用 RubyZip 生成 ZIP 文件时设置压缩级别 - 2

    我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看ruby​​zip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d

  4. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

    类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

  5. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  6. ruby - 在 Ruby 中使用匿名模块 - 2

    假设我做了一个模块如下:m=Module.newdoclassCendend三个问题:除了对m的引用之外,还有什么方法可以访问C和m中的其他内容?我可以在创建匿名模块后为其命名吗(就像我输入“module...”一样)?如何在使用完匿名模块后将其删除,使其定义的常量不再存在? 最佳答案 三个答案:是的,使用ObjectSpace.此代码使c引用你的类(class)C不引用m:c=nilObjectSpace.each_object{|obj|c=objif(Class===objandobj.name=~/::C$/)}当然这取决于

  7. ruby - 其他文件中的 Rake 任务 - 2

    我试图在一个项目中使用rake,如果我把所有东西都放到Rakefile中,它会很大并且很难读取/找到东西,所以我试着将每个命名空间放在lib/rake中它自己的文件中,我添加了这个到我的rake文件的顶部:Dir['#{File.dirname(__FILE__)}/lib/rake/*.rake'].map{|f|requiref}它加载文件没问题,但没有任务。我现在只有一个.rake文件作为测试,名为“servers.rake”,它看起来像这样:namespace:serverdotask:testdoputs"test"endend所以当我运行rakeserver:testid时

  8. ruby-on-rails - Ruby net/ldap 模块中的内存泄漏 - 2

    作为我的Rails应用程序的一部分,我编写了一个小导入程序,它从我们的LDAP系统中吸取数据并将其塞入一个用户表中。不幸的是,与LDAP相关的代码在遍历我们的32K用户时泄漏了大量内存,我一直无法弄清楚如何解决这个问题。这个问题似乎在某种程度上与LDAP库有关,因为当我删除对LDAP内容的调用时,内存使用情况会很好地稳定下来。此外,不断增加的对象是Net::BER::BerIdentifiedString和Net::BER::BerIdentifiedArray,它们都是LDAP库的一部分。当我运行导入时,内存使用量最终达到超过1GB的峰值。如果问题存在,我需要找到一些方法来更正我的代

  9. ruby - 使用 ruby​​ 和 savon 的 SOAP 服务 - 2

    我正在尝试使用ruby​​和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我

  10. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

随机推荐