精华内容
下载资源
问答
  • 自定义覆盖物
    2021-07-26 10:30:53

    记一下自定义覆盖物渲染代码,部分代码是抄官方demo的作业

    /** 
    * 环境 vue2.x + webpack
    */
    // 先整个js类,继承百度MAP的Overlay
    export default class CustomizedOverlay extends BMap.Overlay{
        constructor(point, self, data) {
          super();
          this._point = point;
          this._self = self;
          this._data = data;
        }
        initialize(map) {
          // 这里自定义覆盖物,想画个啥就画个啥,整个canvas也不是不可以
          const template = `<div class="name">${this._data.name}</div>`;
          let target = this._div = document.createElement("div");
          target.innerHTML = template;
          // demo里这里给的是map.getPanes().LabelPane.appendChild(target),我这边没用到label这个覆盖物,想来还是放在map上最稳妥,就放map上了
          map.getPanes().mapPane.appendChild(target)
          return target;
        }
    
        draw() {
          let map = this._self.map;
          let pixel = map.pointToOverlayPixel(this._point);
          this._div.style.left = pixel.x - 11 + "px";
          this._div.style.top  = pixel.y - 22 + "px";
        }
    
        addEventListener(event, fun){
          this._div['on' + event] = fun;
        }
        setTop() {
          this._div.style.zIndex = 9999
        }
        setStyle(param, val){
          this._div.style[param] = val;
        }
      }
    
    //	完了后在页面里调用
    //	vue结构之类的就不写了
    import CustomizedOverlay from "./CustomizedOverlay.js"
    ...
    ...
    paintCustomizedOverlay(){
    	let self = this;
    	var cusovlay = new CustomizedOverlay(new BMap.Point('123', '456'), self, data);
    	//	想要设置监听或者样式的画就调用CustomizedOverlay的方法
    	//	监听
    	cusovlay.addEventListener("click", () => {
               //  随便写
         });
    	//	设置样式
    	cusovlay.setStyle('zIndex', 12345)
    
    	//	完事儿记得把自定义覆盖物挂上去
        self.map.addOverlay(cusovlay);
    }
    

    挺折磨的,整个自定义覆盖物害得实现个类,光看DEMO都得分析半天,加上还有不少什么层级之类的坑,建议对着高德API一个make的re

    更多相关内容
  • 具体的应用场景简而言之就是需要我们在地图上添加如图中所示的自定义覆盖物。实现的过程作者分为以下两点给大家介绍介绍。 水波紋的实现 自定义覆盖物的实现 水波紋的实现 这个需求的实现肯定是离不开我们自己写...
  • 此类表示地图上的一个覆盖物,该覆盖物由文字和图标组成,从Overlay继承。 主入口类是TextIconOverlay, 基于Baidu Map API 1.2
  • 百度地图自定义覆盖物绘制等,多边形覆盖物面积计算
  • // 自定义水波纹覆盖物 export default class 水波纹覆盖物 extends TMap.DOMOverlay { constructor(options) { super(options); } // 初始化:获取配置参数 onInit({ position, 引用的图标, id, } = {}) { ...

    1.在vue中使用腾讯地图并添加水波纹覆盖物
    2.首先需要创建覆盖物

    // 自定义水波纹覆盖物
    export default class 水波纹覆盖物 extends TMap.DOMOverlay {
        constructor(options) {
            super(options);
        }
    
        // 初始化:获取配置参数
        onInit({ position, 引用的图标, id, } = {}) {
            Object.assign(this, { position, 引用的图标, id, });
        }
    
        // 创建DOM元素,返回一个Element,使用this.dom可以获取到这个元素
        createDOM() {
            this.onMouseEnter = function (e) {
                this.emit('mouseenter', e.target.firstChild);
            }.bind(this);
            this.onMouseLeave = function (e) {
                this.emit('mouseleave', e.target.firstChild);
            }.bind(this);
            this.onClick = function (e) {
                this.emit('click', e.target.firstChild);
            }.bind(this);
            let mydom = document.createElement('div')
            mydom.setAttribute("id", "grad2")
            mydom.innerHTML = '<div class="biggest"><div class="middle"><img src="' + this.引用的图标+ '"/></div></div>';
            mydom.style.cssText = ['position: absolute;', 'top:  0px;', 'left: 0px;'].join('');
            mydom.addEventListener('click', this.onClick);
            mydom.addEventListener('mouseenter', this.onMouseEnter);
            mydom.addEventListener('mouseleave', this.onMouseLeave);
            return mydom;
        }
    
        // 更新DOM元素,在地图移动/缩放后执行
        updateDOM() {
            if (!this.map) {
                return;
            }
            // 经纬度坐标转容器像素坐标
            let pixel = this.map.projectToContainer(this.position);
            // 使饼图中心点对齐经纬度坐标点
            let left = pixel.getX() - this.dom.clientWidth / 2 + 'px';
            let top = pixel.getY() - this.dom.clientHeight / 2 + 'px';
            this.dom.style.transform = `translate(${left}, ${top})`;
        }
    
        // 销毁时
        onDestroy() {
            if (this.onClick) {
                this.dom.removeEventListener(this.onClick);
            }
            if (this.onMouseLeave) {
                this.dom.removeEventListener(this.onMouseLeave);
            }
            if (this.onMouseEnter) {
                this.dom.removeEventListener(this.onMouseEnter);
            }
        }
    }
    

    覆盖物要继承腾讯的类, 初始化的时候把我们用到的参数全部传进来
    然后创建dom,创建dom的时候需要把鼠标事件创建出来,然后监听鼠标事件,实现对mark操作时候的响应,还需要把更新方法实现出来,通过transform实现坐标定位,销毁时,要把鼠标事件也销毁掉

    3, 实现了自定义mark标记,我们引用的时候
    要创建一个mark的集合来存储所有的自定义覆盖物,

          MarkList: []
    
    var param = new 水波纹覆盖物({
              //点标注数据数组WaterRipple
              map: map,
              position: new TMap.LatLng(lat, lng),
              引用的图标: 引用的图标,
              id: id,
            })
            this.MarkList.push(param);
          }
    

    这样就可以吧自定义标记打到地图中去

    但是我们还需要删除标记

     if (this.MarkList) {
            this.MarkList.forEach(mark => {
              mark.setMap(null);
            })
          }
    

    或者我们也可以根据我们自定义的id作为一个判断条件根据id删除
    同时我们可以给自定义标记增加信息框,同时给标记增加各种鼠标事件

     				mark.on('click', () => {
             
            });
            var map = document.getElementById("china-map");
            mark.on('mouseenter', () => {
              map.style.cursor = "pointer";
            });
            mark.on('mouseleave', () => {
              map.style.cursor = this.cursor;
            });
    

    给自定义标记添加信息框和默认的标记差不多创建一个信息框,并将信息通过mark传过去

    到此结束

    展开全文
  • 自定义覆盖物:继承Overlay类这个例子是在地图中间添加了一个覆盖物//1、定义构造函数并继承Overlay 定义自定义覆盖物的构造函数function SquareOverlay(center, length, color) {this._center = center;...

    一. 自定义覆盖物:继承Overlay类

    这个例子是在地图中间添加了一个覆盖物

    //1、定义构造函数并继承Overlay      定义自定义覆盖物的构造函数

    function SquareOverlay(center, length, color) {

    this._center = center;

    this._length = length;

    this._color = color;

    }

    // 继承API的BMap.Overlay

    SquareOverlay.prototype = new BMap.Overlay();

    //2、初始化自定义覆盖物

    // 实现初始化方法

    SquareOverlay.prototype.initialize = function (map) {

    // 保存map对象实例

    this._map = map;

    // 创建div元素,作为自定义覆盖物的容器

    var div = document.createElement("div");

    div.style.position = "absolute";

    // 可以根据参数设置元素外观

    div.style.width = this._length + "px";

    div.style.height = this._length + "px";

    div.style.background = this._color;

    div.appendChild(document.createTextNode("覆盖物测试"));

    // 将div添加到覆盖物容器中         map.getPanes().markerPane.appendChild(div);

    // 保存div实例

    this._div = div;

    // 需要将div元素作为方法的返回值,当调用该覆盖物的show、

    // hide方法,或者对覆盖物进行移除时,API都将操作此元素。

    return div;

    }

    //3、绘制覆盖物

    // 实现绘制方法

    SquareOverlay.prototype.draw = function () {

    // 根据地理坐标转换为像素坐标,并设置给容器

    var position = this._map.pointToOverlayPixel(this._center);

    this._div.style.left = position.x - this._length / 2 + "px";

    this._div.style.top = position.y - this._length / 2 + "px";

    }

    //4、显示和隐藏覆盖物

    // 实现显示方法

    SquareOverlay.prototype.show = function () {

    if (this._div) {

    this._div.style.display = "";

    }

    }

    // 实现隐藏方法

    SquareOverlay.prototype.hide = function () {

    if (this._div) {

    this._div.style.display = "none";

    }

    }

    //5、添加其他覆盖物方法

    //比如,改变颜色

    SquareOverlay.prototype.yellow = function () {

    if (this._div) {

    this._div.style.background = "yellow";

    }

    }

    //6、自定义覆盖物添加事件方法

    SquareOverlay.prototype.addEventListener = function (event, fun) {

    this._div['on' + event] = fun;

    }

    //7、添加自定义覆盖物

    var mySquare = new SquareOverlay(map.getCenter(), 100, "red");

    map.addOverlay(mySquare);

    //8、 为自定义覆盖物添加点击事件

    mySquare.addEventListener('click', function () {

    alert('haveTest');

    });

    二. 自定义控件:继承Control类

    这里是在地图右上角添加了一个工具栏(三个按钮)

    function StaticsControl() {         // 设置默认停靠位置和偏移量           this.defaultAnchor = BMAP_ANCHOR_TOP_RIGHT;         this.defaultOffset = new BMap.Size(10, 10);     }     // 通过JavaScript的prototype属性继承于BMap.Control       StaticsControl.prototype = new BMap.Control();     StaticsControl.prototype.initialize = function (map) {         // 创建一个DOM元素           var div = document.createElement("div");         // 添加文字说明           var e1 = document.createElement("input");         e1.type = "button";         e1.value = "专题统计";         e1.onclick = function () {             Statics();         }         var object = div.appendChild(e1);         var e2 = document.createElement("input");         e2.type = "button";         e2.value = "结束统计";         e2.onclick = function () {             EndStatics();         }         var object = div.appendChild(e2);         var e3 = document.createElement("input");         e3.type = "button";         e3.value = "统计设置";         e3.onclick = function () {             SetStatics();         }         var object = div.appendChild(e3);         // 添加DOM元素到地图中           map.getContainer().appendChild(div);         // 将DOM元素返回           return div;     }     // 创建控件实例       var staticsCtrl = new StaticsControl();     // 添加到地图当中       map.addControl(staticsCtrl);     function SetStatics() {         alert("SetStatics");     }     function EndStatics() {         alert("EndStatics");     }     function Statics() {         alert("Statics");     }

    展开全文
  • 如何在vue中使用百度地图添加自定义覆盖物(水波纹)动画效果

    具体的应用场景简而言之就是需要我们在地图上添加如图中所示的自定义覆盖物。实现的过程作者分为以下两点给大家介绍介绍。

    • 水波紋的实现
    • 自定义覆盖物的实现

    水波紋的实现

    这个需求的实现肯定是离不开我们自己写自定义覆盖物的,那么首先我们来讨论一下水波纹动画的实现。

    首先我们可以看到图中的覆盖物是由一个红心和水波紋组成,其中红心是固定不动的,那么我们可以直接这么写:

    .radar {
     width: 40px;
     height: 40px;
     border-radius: 50%;
     background-color: red;
    }
    <div class="radar"></div>

    这样子我们首先就实现了红心部分的样式。那么水波紋又是怎么实现的呢?

    我们可以从图中观察得出先后总共有三个水波紋从里到外逐渐的往外扩散。我们单独从一个水波紋来看的话,其实往外扩散的原理是通过动画让水波紋的宽高逐渐递增到一定程度即可,具体扩散多大呢读者可以根据自己的需求设定水波紋的最后宽高。

    水波紋的基本结构和样式实现如下:

    .radar {
        width: 40px;
        height: 40px;
        border-radius: 50%;
        background-color: red;
        position: relative;
        .ripple {
             width: 40px;
             height: 40px;
             border-radius: 50%;
             position: absolute;
             top: 50%;
             left: 50%;
             transform: translate(-50%,-50%);
             border: 1px solid red;
             animation: ripple 2s linear infinite;
        }
    }
    <div class="radar">
        <div class="ripple"></div>
        <div class="ripple"></div>
        <div class="ripple"></div>
    </div>

    之所以将水波紋的dom节点嵌套在radar节点里面主要是做一个“子绝父相”定位以达到水波紋居中对齐的效果,这个应该很容易理解。至于水波紋的初始宽高呢,为了方便动画延迟时间的计算,我就设置为跟红心宽高相等即可,如果读者有兴趣可以尝试一下宽高设置在0~40px任意值的看看效果(作者盲猜动画可能会有点瑕疵,可能也不会------>“手动狗头”))。

    至于动画的实现呢,这个就很简单了,我们只需要同时将水波紋的宽高都逐渐变大即可,但是有个点要注意一下就是水波紋最后是会消失的,这里我们利用opacity:0配合动画达到逐渐消失的效果。

    @keyframes ripple {
        to {
         width: 150px;
         height: 150px;
         opacity: 0;
        }
    }

    代码到了这里,我们水波紋已经是实现了,但是不是少了点什么?说好的三个水波紋呢?

    这个问题也很好解决,我们只需要给水波紋设置对应的动画延迟即可。

    .radar :nth-child(1) {
        animation-delay: 0.666s;
    }
    .radar :nth-child(2) {
        animation-delay: 1.322s;
    }

    这样子我们就把水波紋给实现出来啦。

    自定义覆盖物的实现

    本次作者采用的是百度地图实现的需求,那么如何通过百度地图来实现自定义覆盖物呢?

    其实百度地图开发文档中也很直白的向我们展示自定义覆盖物的开箱方法。这里作者用es6的class稍微改写了一下写法,道理都一样的,官方案例可以参考百度地图demo

    自定义覆盖物实现分以下三步:

    • 定义构造函数并继承Overlay
    • 初始化自定义覆盖物
    • 绘制覆盖物

    定义构造函数并继承Overlay

    按照官网的说法是:“首先您需要定义自定义覆盖物的构造函数,通过构造函数参数可以传递一些自由的变量。设置自定义覆盖物对象的prototype属性为Overlay的实例,以便继承覆盖物基类”。

    正在上传…重新上传取消

    运用es6 class我们可以很快的实现:

    其中point传递的是坐标位置,用于后续计算覆盖物在地图上的位置。

    class RadarOverlay extends BMap.Overlay {
     constructor(point) {
      super();
      this.point = point;
     }
    }

    初始化自定义覆盖物

    官方的说法是:“实现initialize方法,当调用map.addOverlay方法时,API会调用此方法。当调用map.addOverlay方法添加自定义覆盖物时,API会调用该对象的initialize方法用来初始化覆盖物,在初始化过程中需要创建覆盖物所需要的DOM元素,并添加到地图相应的容器中。这里我们选择添加在容器markerPane上。”

    其实意思大概就是说,因为百度地图在添加overLay时会调用自定义覆盖物构造函数中的initialize方法,这个initialize方法是用来初始化覆盖物的,他会在初始化过程中创建所需要的DOM,因此我们要在我们自己的构造函数(这里我们用的是类)中实现一个initialize。

    百度地图官网的方法:

    那么我们就按照官网的要求,在类中定义一个initialize方法。其中template存的是我们初始化中所需要的DOM元素,这里的dom节点会比上文中实现水波纹的环节多了一个className为rader-box的父节点,因为在官网中我们也可以看到官方实例在创建DOM元素时给DOM节点添加了position:absolute的样式,但由于我们的radar节点的position为relative,所以我们需要在最外层多嵌套一层dom节点以确保整个dom相对于地图定位。当然啦该父节点的position也就为绝对定位

    initialize(map) {
     this._map = map;
     const template = `<div class="radar-box">
      <div class="radar">
       <div class="ripple"></div>
       <div class="ripple"></div>
       <div class="ripple"></div>
      </div>
     </div>`;
     // 创建文档碎片
     const divFragment = document.createRange().createContextualFragment(template);
     const div = divFragment.querySelectorAll('.radar-box')[0];
     // 将div添加到覆盖物容器中
     map.getPanes().markerPane.appendChild(div);
     this._div = div;
     return div;
    }

    这样子我们就成功的在类中定义了一个initialize方法,至于为什么要将div添加到覆盖物容器中官网的也有如下说明:

    大概就是说百度地图里面已经给我们提供了若干的覆盖物展示方法,我们自定义的覆盖物其实是保存在我们选择的其中某个覆盖物容器之下,有兴趣的小伙伴可以去了解一下各种覆盖物容器。。。

    绘制覆盖物

    这里作者继续抛砖引玉阿,官方的说法是:“到目前为止,我们仅仅把覆盖物添加到了地图上,但是并没有将它放置在正确的位置上。您需要在draw方法中设置覆盖物的位置,每当地图状态发生变化(比如:位置移动、级别变化)时,API都会调用覆盖物的draw方法,用于重新计算覆盖物的位置。通过map.pointToOverlayPixel方法可以将地理坐标转换到覆盖物的所需要的像素坐标。”

    简单来讲就是比如地图缩放比例之后,会重新调用覆盖物中的draw方法,用于重新鸡算覆盖物的位置。

    那么问题来了,draw方法哪里来的?

    所以官方的意思是我们在自定义覆盖物中的构造函数定义一个draw方法,方法中我们利用百度地图的map.pointToOverlayPixel方法(用来将地理坐标转换为像素坐标)可以将地理坐标转换到覆盖物的所需要的像素坐标。
    那么我们只需要在类中加入draw方法即可:

    其中this.point就是我们构造函数中的point坐标点,40表示的是我们整个水波纹的初始宽高,读者其实可以将40改为可以传参的形式比如this.size,这样会方便后续代码的维护,这里为了直观的让读者理解就不讲太复杂了。

    draw() {
     // 根据地理坐标转换为像素坐标,并设置给容器
     const position = this._map.pointToOverlayPixel(this.point);
     this._div.style.left = `${position.x - 40 / 2}px`;
     this._div.style.top = `${position.y - 40 / 2}px`;
    }

    到此,我们整个自定义覆盖物的类就已经实现了,整体代码图下(这里把40改为this.size代码维护起来稍微方便点):

    class RadarOverlay extends BMap.Overlay {
     constructor(point, size) {
      super();
      this.point = point;
      this.size = size;
     }
     
     initialize(map) {
      this._map = map;
      const template = `<div class="radar-box">
        <div class="radar">
         <div class="ripple"></div>
         <div class="ripple"></div>
         <div class="ripple"></div>
        </div>
       </div>`;
      const divFragment = document.createRange().createContextualFragment(template);
      const div = divFragment.querySelectorAll('.radar-box')[0];
      map.getPanes().markerPane.appendChild(div);
      this._div = div;
      return div;
     }
     
     draw() {
      // 根据地理坐标转换为像素坐标,并设置给容器
      const position = this._map.pointToOverlayPixel(this.point);
      this._div.style.left = `${position.x - this.size / 2}px`;
      this._div.style.top = `${position.y - this.size / 2}px`;
     }
    }

    自定义覆盖物的使用

    那既然我们都已经实现了自定义的覆盖物,第一件事当然就是把它给使用上,具体如下:

    initMap() {
     const map = new BMap.Map(this.$refs.map);
     map.centerAndZoom(new BMap.Point(116.404, 39.915), 15);
     // 实例化我们要绘制自定义覆盖物的点坐标
     const point = new BMap.Point(116.404, 39.915);   
      // 实例化自定义覆盖物,将坐标点和水波纹的尺寸传进构造函数中
     const radar = new RadarOverlay(point, 40);  
     // 添加自定义覆盖物
     map.addOverlay(radar);
    }

     效果如图:

    结语

    至于构造自定义覆盖物的其他内容,大佬们如果要深入的话可以参考百度地图的文档,里面讲的肯定要比作者更加详细(狗头)。如果文章的内容有问题话的欢迎留言点出,希望能与各路大佬们交流交流,喜欢作者的文章的话也别忘了给我点个赞,这对我来说很重要。

    源码地址:百度地图自定义覆盖物: vue中使用百度地图创建自定义覆盖物

    展开全文
  • 自己做的一个综合实例,包括自定义覆盖物 地图单击弹窗 提示信息等功能 。唯一遗憾的是没有实现标注物聚合。这里给出网址大家可以自己研究下http://my.eoe.cn/imesong/archive/21397.html
  • 以下内容转载自多多洛爱学习的文章《JSAPI-在地图上添加自定义覆盖物》 作者:多多洛爱学习 链接:https://juejin.im/post/5ee5f80d51882542e2695874 来源:掘金 著作权归作者所有。商业转载请联系作者获得授权,非...
  • 百度地图自定义覆盖物

    千次阅读 2018-07-24 10:55:07
    1、覆盖物函数 iconPath:图片路径 marker: 存放标注点经纬信息的数组 sizeW:图片尺寸(宽) sizeH:图片尺寸(高) function replaceIcon(iconPath, marker, sizeW, sizeH) { map.removeOverlay(marker); ...
  • 此类表示地图上的一个覆盖物,该覆盖物由文字和图标组成,从Overlay继承。 主入口类是TextIconOverlay, 基于Baidu Map API 1.2
  • 百度地图自定义覆盖物添加和删除
  • 百度地图自定义覆盖物,覆盖物显示信息可完全自己根需求,div+css
  • 完整代码:js鼠标悬停高亮显示行政区/地图自定义覆盖物/地图api-Javascript文档类资源-CSDN下载js百度地图自定义覆盖物/鼠标悬停行政区域高亮显示更多下载资源、学习资料请访问CSDN下载频道....jjson,地图上的区域时...
  • // 创建div元素,作为自定义覆盖物的容器 var div = (this._div = document.createElement('div')); div.style.position = 'absolute'; div.style.zIndex = BMap.Overlay.getZIndex(this._point.lat); // ...
  • 以下内容转载自多多洛爱学习的文章《JSAPI-在地图上添加自定义覆盖物》 作者:多多洛爱学习 链接:https://juejin.im/post/5ee5f80d51882542e2695874 来源:掘金 著作权归作者所有。商业转载请联系作者获得授权,非...
  • 最近用到了百度地图,使用了自定义覆盖物后,出现了问题,就是界面首次加载时,点击事件可以用,但是移动地图后就失效了,在看了官方的类参考之后,发现了原因 只要实现了这个方法,在方法里面重新添加事件就可以了...
  • 效果图,点击时高亮事件 api地址 ... 代码 // 给覆盖物增加点击事件 polygon.on('click', showInfoP); function showInfoP(e) { // 点击之后的样式 polygon.setOptions({
  • 前言介绍: 主要是基于v3.0的API版本进行的离线,纯内网可操作,基本上实现了现有90%以上的功能点,能兼容jpg和png格式的瓦片...覆盖物示例: 添加/删除覆盖物 折线上添加方向箭头 添加动画标注点 设置点的新图标 设
  • 点击返回周边信息,效果图 一、页面引入百度地图js <...ak=自己申请或公司的地图ak"></script>...script type="text/javascript" src="js/jquery-1.10.2.min.js">...script type="text/java
  • 百度map 这只覆盖物的标签和标注文字,和自定义覆盖物,代码工具类
  • 2.想自定义覆盖物样式:只需在callBackFn函数里,再添加content参数,里面可以添加我们自定义的标签名和样式,这样就算你想在里面画花都行了;效果图: dome:&lt;!DOCTYPE html&gt; &lt;html&gt; &...
  • //百度地图自定义覆盖物 var bdPoint = new BMap.Point(116.709684,39.89778); var meIcon = new BMap.Icon("自己的路径/image/me.png", new BMap.Size(45,63)); var marker = new BMap.Marker(bdPoint,{icon:...
  • 借助百度地图标注的拖拽功能实现覆盖物的拖拽 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" ...
  • 百度地图 你可以使用 自己的图片 但是 本地的 直接使用的话 是 出不来的, 必须使用线上的资源 ...自定义覆盖物 把本质上你可以在搞一个 div 然后我们可以设置这个div的样式 背景图片 字体啥的 那样 是不是 就简单多...
  • 自定义复杂覆盖物: //定义构造函数 function ComplexCustomOverlay(point, opt, html) { //参数分别为经纬度位置,偏移距离,html this._point = point; this._opt = opt || {}; this._html = html; } ...
  • 直接看图:正常是这样的 我点击平面图后,再点击百度...覆盖物跑到右下角了,鼠标在地图上随意拖拽一下,覆盖物就正常显示定位了。  解决办法: reloadScene(){ if(this.picId==0){ //百度地图 this.map...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,665
精华内容 6,266
关键字:

自定义覆盖物