国产久_亚欧精品一区_久久亚洲美女_99精品在线观看_日韩成人三级_久久精品久久久久

添加自定義覆蓋物
編輯時間:2017-03-03

zdy.jpg



自定義覆蓋物

API自1.1版本起支持用戶自定義覆蓋物。

要創建自定義覆蓋物,您需要做以下工作:

1.定義一個自定義覆蓋物的構造函數,通過構造函數參數可以傳遞一些自由的變量。

2.設置自定義覆蓋物對象的prototype屬性為Overlay的實例,以便繼承覆蓋物基類。

3.實現initialize方法,當調用map.addOverlay方法時,API會調用此方法。

4.實現draw方法。

定義構造函數并繼承Overlay

首先您需要定義自定義覆蓋物的構造函數,在下面的示例中我們定義一個名為SquareOverlay的構造函數,它包含中心點和邊長兩個參數,用來在地圖上創建一個方形覆蓋物。

// 定義自定義覆蓋物的構造函數 

function SquareOverlay(center, length, color){   

 this._center = center;   

 this._length = length;   

 this._color = color;   

}   

// 繼承APIBMap.Overlay   

SquareOverlay.prototype = new BMap.Overlay();

初始化自定義覆蓋物

當調用map.addOverlay方法添加自定義覆蓋物時,API會調用該對象的initialize方法用來初始化覆蓋物,在初始化過程中需要創建覆蓋物所需要的DOM元素,并添加到地圖相應的容器中。

地圖提供了若干容器供覆蓋物展示,通過map.getPanes方法可以得到這些容器元素,它們包括:

floatPane

markerMouseTarget

floatShadow

labelPane

markerPane

mapPane

這些對象代表了不同的覆蓋物容器元素,它們之間存在著覆蓋關系,最上一層為floatPane,用于顯示信息窗口內容,下面依次為標注點擊區域層、信息窗口陰影層、文本標注層、標注層和矢量圖形層。

我們自定義的方形覆蓋物可以添加到任意圖層上,這里我們選擇添加到markerPane上,作為其一個子結點。

// 實現初始化方法 

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添加到覆蓋物容器中  

 map.getPanes().markerPane.appendChild(div);     

// 保存div實例  

 this._div = div;     

// 需要將div元素作為方法的返回值,當調用該覆蓋物的show  

// hide方法,或者對覆蓋物進行移除時,API都將操作此元素。  

 return div;   

}

繪制覆蓋物

到目前為止,我們僅僅把覆蓋物添加到了地圖上,但是并沒有將它放置在正確的位置上。您需要在draw方法中設置覆蓋物的位置,每當地圖狀態發生變化(比如:位置移動、級別變化)時,API都會調用覆蓋物的draw方法,用于重新計算覆蓋物的位置。通過map.pointToOverlayPixel方法可以將地理坐標轉換到覆蓋物的所需要的像素坐標。

// 實現繪制方法  

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";   

}

移除覆蓋物

當調用map.removeOverlay或者map.clearOverlays方法時,API會自動將initialize方法返回的DOM元素進行移除。

顯示和隱藏覆蓋物

自定義覆蓋物會自動繼承Overlay的show和hide方法,方法會修改由initialize方法返回的DOM元素的style.display屬性。如果自定義覆蓋物元素較為復雜,您也可以自己實現show和hide方法。

// 實現顯示方法   

SquareOverlay.prototype.show = function(){   

 if (this._div){   

   this._div.style.display = "";   

 }   

}     

// 實現隱藏方法 

SquareOverlay.prototype.hide = function(){   

 if (this._div){   

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

 }   

}

自定義其他方法 通過構造函數的prototype屬性,您可以添加任何自定義的方法,比如下面這個方法每調用一次就能改變覆蓋物的顯示狀態:

// 添加自定義方法  

SquareOverlay.prototype.toggle = function(){   

 if (this._div){   

   if (this._div.style.display == ""){   

     this.hide();   

   }   

   else {   

     this.show();   

   }   

 }   

}

添加覆蓋物

您現在已經完成了一個完整的自定義覆蓋物的編寫,可以添加到地圖上了。

// 初始化地圖 

var map = new BMap.Map("container");   

var point = new BMap.Point(116.404, 39.915);   

map.centerAndZoom(point, 15);   

// 添加自定義覆蓋物  

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

map.addOverlay(mySquare);

實現上圖效果的JS代碼示例:

<script type="text/javascript">
    
// 創建Map實例
   
var mp = new BMap.Map("allmap", {enableMapClick:false});
    
// 設置地圖背景色為白色
   
mp.getContainer().style.background = '#FFF';
    
var point = new BMap.Point(110.1, 35.1);
    
// 默認顯示中心點和地圖層級
  
mp.centerAndZoom(point, 5);
    
mp.addControl(new BMap.NavigationControl());
    
mp.addControl(new BMap.NavigationControl());
    
//顯示比例尺在右下角
mp.addControl(new BMap.ScaleControl({anchor: BMAP_ANCHOR_BOTTOM_RIGHT, isOpen: true}));
//右上角顯示電子地圖和衛星圖切換
mp.addControl(new BMap.MapTypeControl({mapTypes: [BMAP_NORMAL_MAP,BMAP_SATELLITE_MAP]}));
   
mp.enableScrollWheelZoom();      // 啟用滾輪放大縮小。
  
mp.enableKeyboard();             // 啟用鍵盤操作。 
  
mp.enableContinuousZoom();    //啟用連續縮放效果
  
function ComplexCustomOverlay(point, text, mouseoverText){
       
this._point = point;
       
this._text = text;
       
this._overText = mouseoverText;
       
}
        ComplexCustomOverlay.prototype =
new BMap.Overlay();
       
ComplexCustomOverlay.prototype.initialize = function(map){
       
this._map = map;
       
var div = this._div = document.createElement("div");
       
div.style.position = "absolute";
       
div.style.zIndex = BMap.Overlay.getZIndex(this._point.lat);
       
div.style.backgroundColor = "#EE5D5B";
       
div.style.border = "1px solid #BC3B3A";
       
div.style.color = "white";
       
div.style.height = "18px";
       
div.style.padding = "2px";
       
div.style.lineHeight = "18px";
       
div.style.whiteSpace = "nowrap";
       
div.style.MozUserSelect = "none";
       
div.style.fontSize = "12px"
       
var span = this._span = document.createElement("span");
       
div.appendChild(span);
       
span.appendChild(document.createTextNode(this._text));
       
var that = this;

       
var arrow = this._arrow = document.createElement("div");
       
arrow.style.background = "url(images/label.png) no-repeat";
       
arrow.style.position = "absolute";
       
arrow.style.width = "11px";
       
arrow.style.height = "10px";
       
arrow.style.top = "22px";
       
arrow.style.left = "10px";
       
arrow.style.overflow = "hidden";
       
div.appendChild(arrow);

       
div.onmouseover = function(){
       
this.style.backgroundColor = "#6BADCA";
       
this.style.borderColor = "#0000ff";
       
this.getElementsByTagName("span")[0].innerHTML = that._overText;
       
arrow.style.backgroundPosition = "0px -20px";
        
}

        div.onmouseout = function(){
       
this.style.backgroundColor = "#EE5D5B";
       
this.style.borderColor = "#BC3B3A";
       
this.getElementsByTagName("span")[0].innerHTML = that._text;
       
arrow.style.backgroundPosition = "0px 0px";
        
}

        mp.getPanes().labelPane.appendChild(div)
;

       
return div;
       
}
        ComplexCustomOverlay.prototype.draw = function(){
        var map =
this._map;
       
var pixel = map.pointToOverlayPixel(this._point);
       
this._div.style.left = pixel.x - parseInt(this._arrow.style.left) + "px";
       
this._div.style.top  = pixel.y - 30 + "px";
       
}
var txt =
"銀湖海岸城", mouseoverTxt = txt + " " + parseInt(Math.random() * 1000,10)
+
"" ;

var myCompOverlay = new ComplexCustomOverlay(new BMap.Point(116.407845,39.914101),
"銀湖海岸城",mouseoverTxt);
       
mp.addOverlay(myCompOverlay);
</script>

                           

查看二維碼

免費咨詢電話

400-028-7262

淘寶店鋪

bigemap.taobao.com

聯系我們
国产久_亚欧精品一区_久久亚洲美女_99精品在线观看_日韩成人三级_久久精品久久久久
<code id="kseui"><acronym id="kseui"></acronym></code>
  • <abbr id="kseui"><tbody id="kseui"></tbody></abbr>
  • <button id="kseui"></button>
  • 99热免费精品| 国产精品香蕉视屏| 久久伊人亚洲| 国产精品免费在线| 亚洲精品国产一区| 亚洲午夜久久久久久尤物| 久久国产精品免费一区| 久久国产精品亚洲va麻豆| 欧美一区网站| 麻豆亚洲精品| 任我爽在线视频精品一| 在线日本成人| 国产亚洲第一区| 一区二区三区四区五区视频| 国产精品美女黄网| 日本视频一区二区不卡| 亚洲小说欧美另类社区| 成人在线免费网站| 欧美在线日韩| 国产精品乱码一区二区三区| 欧美久久综合| 国产一级精品aaaaa看| 欧美日韩国产综合网| 91嫩草国产在线观看| 欧美久久久久久| 国产女主播一区二区三区| 欧美日韩另类丝袜其他| 国产日韩欧美二区| 亚洲人妖在线| 日本视频一区二区在线观看| 性感少妇一区| 国内精品久久久久久久97牛牛| 99在线视频免费观看| 欧美日韩网站| 韩日精品在线| 亚洲欧美日产图| 极品av少妇一区二区| 国产美女诱惑一区二区| 91久久国产综合久久蜜月精品| 成人免费在线一区二区三区| 久久久国产精品一区二区三区| 日韩免费av电影| 国产精品v亚洲精品v日韩精品| 亚洲区一区二区三区| 91久久大香伊蕉在人线| 日韩免费一区二区三区| 韩国在线视频一区| 91免费观看| 亚洲精品高清视频| 在线综合欧美| 精品国产免费久久久久久尖叫| 天堂va久久久噜噜噜久久va| 亚洲国产一区二区精品专区| 久久精品综合| 一本色道久久综合| 国产精品一级| 欧美日韩在线精品一区二区三区| 免费在线国产精品| 精品国产一区二区三区日日嗨| 亚洲免费精品| 激情小说综合网| 日韩精品极品视频在线观看免费| 久久久久久亚洲精品不卡4k岛国 | 一区二区免费在线视频| 亚洲一区视频| 日韩免费一区二区三区| 亚洲精品乱码视频| 欧美精品123| 国产欧美激情| 一区二区在线中文字幕电影视频| 亚洲免费婷婷| 一本久久a久久精品vr综合| 免费亚洲一区| 欧美日韩三级| 久久精品一二三区| 亚洲一区免费看| 一区在线电影| 激情视频一区二区| 免费h精品视频在线播放| 一区二区不卡在线视频 午夜欧美不卡'| 国产伦精品一区二区三| 综合久久国产| 蜜桃av久久久亚洲精品| 裸体丰满少妇做受久久99精品| 亚洲激情一区二区| 国产精品sss| 亚洲一区二区三区涩| 欧美日韩岛国| 亚洲精品国产精品久久| 久久久久一区二区三区| 久久久999| 亚洲制服少妇| 99精品国产福利在线观看免费 | 中文字幕一区综合| 久久久久久久久久久久久久久久av| 日韩视频在线播放 | 欧美不卡在线一区二区三区| 5g国产欧美日韩视频| 99www免费人成精品| 欧美视频一区| 一本一道久久久a久久久精品91 | 欧美亚洲免费在线| 亚洲三级毛片| 亚洲一二区在线| 欧美日韩一区在线观看视频| 亚洲欧洲日韩精品| 色一情一乱一伦一区二区三区丨| 成人性色av| 国产日韩欧美二区| 国产伦精品一区二区三区四区视频| 媚黑女一区二区| 久久裸体视频| av噜噜色噜噜久久| av成人免费观看| 国产经典一区二区三区 | 欧美二区在线| 午夜性色一区二区三区免费视频| 神马影院午夜我不卡| 性欧美大战久久久久久久免费观看| 美女一区视频| 一本色道久久综合亚洲二区三区| 亚洲图片都市激情| 一区二区av| 伊人久久大香线蕉av超碰演员| 欧美精品一区二区三区久久久竹菊| 欧美.www| 99热在线精品观看| 在线一区欧美| 99se婷婷在线视频观看| 国产精品香蕉视屏| 日韩影视精品| 欧美三级第一页| 国产视频精品网| 免费毛片一区二区三区久久久| 91精品久久久久久蜜桃| 国产日韩精品久久| 亚洲欧美日韩国产yyy| 亚洲性视频h| 久久综合九色综合久99| 精品乱码一区| 亚洲一区在线免费| 91久久综合| 国产精品二区三区四区| 欧洲久久久久久| 精品成人免费| 999国内精品视频在线| 欧美日韩精品免费看| 欧美日韩精品免费看| 欧美亚洲一区| 日本一区二区在线视频观看| 欧美激情亚洲| 91传媒免费看| 中文字幕精品—区二区日日骚| 最新成人av网站| 国产一区二区久久久| 欧美午夜免费| 肥熟一91porny丨九色丨| 欧美日韩精品免费看| 91久久国产综合久久蜜月精品 | 乱一区二区三区在线播放| 午夜久久一区| 国产精品香蕉视屏| 伊人狠狠色j香婷婷综合| 国产传媒一区二区| 欧美一区亚洲| 国产精品夜夜夜一区二区三区尤| 一区二区国产日产| 国产超碰91| 亚洲精品国产系列| 日韩av在线电影观看| 国产精品人人爽人人做我的可爱| 欧美一区二区三区在线播放| 日韩一区二区免费看| 日本在线观看不卡| 国产精品试看| 欧美日韩免费| 欧美日韩一区二区三区在线视频| 日韩视频在线观看国产| 日韩高清在线播放| 国产精品美女久久久久av福利| 欧美三级午夜理伦三级中文幕| 精品久久久久久一区| 亚洲女优在线| 亚洲视频福利| 亚洲精品无人区| 国产欧美日韩在线播放| 一区二区免费在线视频| 欧美精品亚洲| 色综合久久88色综合天天提莫| 久久这里有精品15一区二区三区| 国产综合网站| 性欧美大战久久久久久久免费观看| 不卡的av一区| 亚洲永久在线| 中文精品视频| 在线国产欧美| 国内久久视频| 午夜精品999| 午夜精品久久99蜜桃的功能介绍| 欧美一区二区三区在线播放|