百度地圖(5)-添加標注


這里所說的標注,就是圖元對象的意思,也就是向地圖上添加各種各樣的對象。

所以,標注就牽涉到兩個要素:位置和要素,位置知道它在哪里,樣式知道它是什么樣子。

百度地圖主要通過Marker以及Overlay來進行標注的定義和添加。

1.  添加點要素並添加點擊事件。

 

 1 function addMarkerPoint() {
 2 
 3   var marker = new BMap.Marker(point);
 4   map.addOverlay(marker);
 5 
 6   marker.addEventListener("click", function () {
 7 
 8     var htmlContent = ["<div class='infoBoxContent'><div class='title'><strong>中海雅園</strong><span class='price'>均價43000,overlay-下面的鏈接無法打開,而infobox可以</span></div>",
 9       "<div class='list'><ul><li><div class='left'><img src='/bdMap/img/house3.jpg'/></div><div class='left'><a target='_blank' href='http://map.baidu.com'>中海雅園南北通透四居室</a><p>4室2廳,205.00平米,3層</p></div><div class='rmb'>760萬</div></li>"
10       ,"<li><div class='left'><img src='/bdMap/img/house1.jpg'/></div><div class='left'><a target='_blank' href='http://map.baidu.com'>中海雅園四居室還帶保姆間</a><p>2室1廳,112.00平米,16層</p></div><div class='rmb'>300萬</div></li>"
11       ,"<li><div class='left'><img src='/bdMap/img/house2.jpg'/></div><div class='left'><a target='_blank' href='http://map.baidu.com'>《有鑰匙 隨時看》花園水系</a><p>3室2廳,241.00平米,16層</p></div><div class='rmb'>400萬</div></li>"
12       ,"<li><div class='left'><img src='/bdMap/img/house3.jpg'/></div><div class='left'><a target='_blank' href='http://map.baidu.com'>富力城D區正規樓王大三居</a><p>3室3廳,241.00平米,17層</p></div><div class='rmb'>600萬</div></li>"
13       ,"<li class='last'><div class='left'><img src='/bdMap/img/house1.jpg'/></div><div class='left'><a target='_blank' href='http://map.baidu.com'>富力城豪,身份人士的象征</a><p>4室2廳,213.90平米,25層</p></div><div class='rmb'>700萬</div></li>"
14       ,"</ul></div>"
15       ,"</div>"];
16 
17     var richContent = new BMapLib.RichMarker(htmlContent.join(""),point,{
18 
19       "anchor": new BMap.Size(-72,-86),
20       "enableDragging":true
21     });
22     map.addOverlay(richContent);
23 
24   });
25   marker.enableDragging();
26   marker.addEventListener("dragend", function(e){
27     alert("當前位置:" + e.point.lng + ", " + e.point.lat);
28   });
29 }

 

2. 點標注對象

1   var marker = new BMap.Marker(point);
2   map.addOverlay(marker);

定義了一個 Marker 對象, point為定義的公共變量,默認為地圖初始化時的中心點。

然后在地圖上通過Overlay添加Marker。這樣添加一個默認點標注的功能就完成了。

 

3. 富文本標注

1 var richContent = new BMapLib.RichMarker(htmlContent.join(""),point,{
2 
3   "anchor": new BMap.Size(-72,-86),
4   "enableDragging":true
5 });
6 map.addOverlay(richContent);

定義了一個富標注的對象,其包含在BMapLib 中,

引用參考代碼:

1  <script type="text/javascript" src="/bdMap/js/BMapLib/RichMarker.min.js"></script>

 

4. 添加線標注

 1   var polyline = new BMap.Polyline([
 2       new BMap.Point(117.2972,31.8988),
 3       new BMap.Point(117.2872,31.9088)
 4     ],
 5     {
 6       strokeColor:"blue",
 7       strokeWeight:6,
 8       strokeOpacity:0.5
 9     });
10   map.addOverlay(polyline);

這里定義了一個Polyline的對象,定義了兩個點的坐標,以及填充的顏色、透明度以及線寬度。

 

5. 添加區域標注

 1 var circle = new BMap.Circle(point,500,{ //圓形區域
 2     strokeColor:"green",
 3     strokeWeight:2,
 4     strokeOpacity:0.7
 5   });
 6 
 7   circle.addEventListener("click",function () {
 8     var center = circle.getBounds().getCenter();
 9     addSimpleInfo(center,"你點了這個圓。");
10   });
11   map.addOverlay(circle);
12 
13   var pEnd = new BMap.Point(117.3172,31.9188); // 長方形區域
14   var rectangle = new BMap.Polygon([
15     new BMap.Point(point.lng,point.lat),
16     new BMap.Point(pEnd.lng,point.lat),
17     new BMap.Point(pEnd.lng,pEnd.lat),
18     new BMap.Point(point.lng,pEnd.lat)
19   ],{
20     strokeColor:'yellow',
21     strokeWeight:2,
22     strokeOpacity:0.5
23   });
24   rectangle.addEventListener("click",function () {
25     var center = rectangle.getBounds().getCenter();
26     addSimpleInfo(center,"你點了這個長方形。");
27   });
28   map.addOverlay(rectangle);
29 
30   var polygon = new BMap.Polygon([ //多邊形區域
31     new BMap.Point(117.2972,31.8988),
32     new BMap.Point(117.2625,31.8635),
33     new BMap.Point(117.3223,31.8534),
34     new BMap.Point(117.3568,31.85863),
35     new BMap.Point(117.3465,31.88641)
36   ],{
37     strokeColor:"red",
38     strokeWeight: 3,
39     strokeOpacity: 0.6
40   });
41   polygon.addEventListener("click",function (){
42     var center = polygon.getBounds().getCenter();
43     addSimpleInfo(center,"你點了個多邊形。")
44   })
45   map.addOverlay(polygon);

 

6. 添加TextIcon標注

1   map.addOverlay(new BMapLib.TextIconOverlay(new BMap.Point(117.2972,31.8988), 7));
2   map.addOverlay(new BMapLib.TextIconOverlay(new BMap.Point(117.2625,31.8635), 15));
3   map.addOverlay(new BMapLib.TextIconOverlay(new BMap.Point(117.3223,31.8534), 24));
4   map.addOverlay(new BMapLib.TextIconOverlay(new BMap.Point(117.3568,31.85863), 48));
5   map.addOverlay(new BMapLib.TextIconOverlay(new BMap.Point(117.3465,31.88641), 99));

TextIcon 類包含在BMapLib 的庫中,具體引用參考代碼。

 

7. 添加自定義圖標

 1 /**
 2  * 添加自定義圖標標注
 3  **/
 4 function addMarkerIcon(){
 5   var myIcon = new BMap.Icon("/bdMap/img/1.gif",new BMap.Size(36,36));
 6   var pt =new BMap.Point(117.3172,31.9188);
 7   var marker = new BMap.Marker(pt,{
 8     icon: myIcon
 9   });
10   marker.enableDragging();
11   map.addOverlay(marker);
12 
13   var opts = {
14     position: pt,
15     offset: new BMap.Size(10,10)
16   }
17   var label = new BMap.Label("這是一個測試用的站點",opts);
18 
19   marker.addEventListener("onmouseout", function(e) {
20     map.removeOverlay(label);
21   });
22   marker.addEventListener("onmouseover", function(e) {
23     console.log("泵房站點: " + e.point.lng + " , " + e.point.lat + " ; " + e.pixel.x + " , " + e.pixel.y + " | ");
24     map.addOverlay(label);
25   });
26 
27   addMarkerInfo(marker);
28 }

 

8. 頁面顯示

 

 

 

 9. 代碼參考

https://github.com/WhatGIS/bdMap


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM