This article briefly introduces the application of Baidu Maps. Here I introduce a function that is to add an event method on a layer you set. Please refer to it if necessary.
It is very simple to add events to overlays such as marker, label, circle, etc., just addEventListener directly. So, how to add events for custom overlays? Let’s take a look~
------------------------------------------------ -------------------------------------------------one , define the constructor and inherit Overlay代码如下 | 复制代码 |
// 定义自定义覆盖物的构造函数 function SquareOverlay(center, length, color){ this._center = center; this._length = length; this._color = color; } // 继承API的BMap.Overlay |
代码如下 | 复制代码 |
// 实现初始化方法 <br>SquareOverlay.prototype.initialize = function(map){ <br>// 保存map对象实例 <br> this._map = map; <br> // 创建div元素,作为自定义覆盖物的容器 <br> var div = document.createElement("div"); <br> div.style.position = "absolute"; <br> // 可以根据参数设置元素外观 <br> div.style.width = this._length + "px"; <br> div.style.height = this._length + "px"; <br> div.style.background = this._color; <br> // 将div添加到覆盖物容器中 <br> map.getPanes().markerPane.appendChild(div); <br> // 保存div实例 <br> this._div = div; <br> // 需要将div元素作为方法的返回值,当调用该覆盖物的show、 <br> // hide方法,或者对覆盖物进行移除时,API都将操作此元素。 <br> return div; <br>} Copy after login |
代码如下 | 复制代码 |
// 实现绘制方法 <br>SquareOverlay.prototype.draw = function(){ <br>// 根据地理坐标转换为像素坐标,并设置给容器 <br> var position = this._map.pointToOverlayPixel(this._center);<br> this._div.style.left = position.x - this._length / 2 + "px"; <br> this._div.style.top = position.y - this._length / 2 + "px"; <br>} Copy after login |
代码如下 | 复制代码 |
//添加自定义覆盖物 <br>var mySquare = new SquareOverlay(map.getCenter(), 100, "red"); <br>map.addOverlay(mySquare); Copy after login |
代码如下 | 复制代码 |
SquareOverlay.prototype.show = function(){ <br> if (this._div){ <br> this._div.style.display = ""; <br> } <br>} Copy after login |
代码如下 | 复制代码 |
mySquare.show(); Copy after login |
// 实现隐藏方法 <br>
代码如下 | 复制代码 |
SquareOverlay.prototype.hide = function(){ if (this._div){ this._div.style.display = "none"; } } |
mySquare.hide();
代码如下 | 复制代码 |
SquareOverlay.prototype.yellow = function(){ <br> if (this._div){ <br> this._div.style.background = "yellow"; <br> } <br>} Copy after login |
mySquare.yellow();
代码如下 | 复制代码 |
<div style="width:520px;height:340px;border:1px solid gray" id="container"></div><br><p><br> <input type="button" value="移除覆盖物" onclick="mySquare.hide();" /><br> <input type="button" value="显示覆盖物" onclick="mySquare.show();" /><br> <input type="button" value="变成黄色" onclick="mySquare.yellow();" /><br></p> Copy after login |
代码如下 | 复制代码 |
// 实现显示方法 Copy after login |
代码如下 | 复制代码 |
SquareOverlay.prototype.addEventListener = function(event,fun){<br> this._div['on'+event] = fun;<br>} Copy after login |
代码如下 | 复制代码 |
mySquare.addEventListener('click',function(){<br> alert('click');<br>}); Copy after login |
代码如下 | 复制代码 |
mySquare.addEventListener('mousemover',function(){<br> alert('鼠标移上来了');<br>}); Copy after login |
代码如下 | 复制代码 |
1 2 3 4 5 6 7 8 9 10
15 16 17 |