百度地圖API 添加標籤

1.手動建立數據,實際項目則是接受GPS信息javascript

/創建座標點:
// lng:經度 lat:緯度
var points = [  
{"lng":112.58,"lat":26.89,"url":"http://www.baidu.com","id":1,"name":"p1"},  
{"lng":112.59,"lat":26.90,"url":"http://www.mi.com","id":2,"name":"p2"},  
{"lng":112.57,"lat":26.88,"url":"http://www.csdn.com","id":3,"name":"p3"}  
]; 

2.建立添加標註點到地圖,併爲標註點添加點擊事件css

//建立標註點並添加到地圖中
function addMarker(points) {
    //循環創建標註點
    for(var i=0, pointsLen = points.length; i<pointsLen; i++) {
        var point = new BMap.Point(points[i].lng, points[i].lat); //將標註點轉化成地圖上的點
        var marker = new BMap.Marker(point); //將點轉化成標註點
        map.addOverlay(marker);  //將標註點添加到地圖上
        //添加監聽事件
        (function() {
            var thePoint = points[i];
            marker.addEventListener("click",
            //顯示信息的方法
                function() {
                showInfo(this,thePoint);
            });
         })();  
    }
}

3.編寫信息顯示方法html

function showInfo(thisMarker,point) {
    //獲取點的信息
    var sContent = 
    '<ul style="margin:0 0 5px 0;padding:0.2em 0">'  
    +'<li style="line-height: 26px;font-size: 15px;">'  
    +'<span style="width: 50px;display: inline-block;">id:</span>' + point.id + '</li>'  
    +'<li style="line-height: 26px;font-size: 15px;">'  
    +'<span style="width: 50px;display: inline-block;">名稱:</span>' + point.name + '</li>'  
    +'<li style="line-height: 26px;font-size: 15px;"><span style="width: 50px;display: inline-block;">查看:</span><a href="'+point.url+'">詳情</a></li>'  
    +'</ul>';
    var infoWindow = new BMap.InfoWindow(sContent); //建立信息窗口對象
    thisMarker.openInfoWindow(infoWindow); //圖片加載完後重繪infoWindow
}

4.建立地圖java

//建立地圖
var map = new BMap.Map("allmap");    
map.centerAndZoom(new BMap.Point(116.404, 39.915), 11);  // 設置中心點
map.centerAndZoom( "衡陽");       //指定中心城市
map.setCurrentCity("衡陽");          
map.addControl(new BMap.MapTypeControl());  //設置可拖拽 
map.enableScrollWheelZoom(true);  //添加滾輪縮放   
addMarker(points); //添加標註
</script>

Tip: 想使用百度地圖api須要申請一個ak,申請方法就不介紹了,百度一大堆.api

1.5 版本 完整代碼(不包括api的ak 須要本身申請):閉包

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<style type="text/css">
body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微軟雅黑";}
</style>
<script type="text/javascript" 
//ak填本身申請的ak
src="http://api.map.baidu.com/api?v=2.0& ak=你申請的AK">
</script>
<title>百度地圖api展現</title>
</head>
<body>
<div id="allmap"></div>
</body>
</html>
<script type="text/javascript">
//新建三個地圖上點
var points = [  
{"lng":112.58,"lat":26.89,"url":"http://www.baidu.com","id":1,"name":"p1"},  
{"lng":112.59,"lat":26.90,"url":"http://www.mi.com","id":2,"name":"p2"},  
{"lng":112.57,"lat":26.88,"url":"http://www.csdn.com","id":3,"name":"p3"}  
]; 
//建立標註點並添加到地圖中
function addMarker(points) {
    //循環創建標註點
    for(var i=0, pointsLen = points.length; i<pointsLen; i++) {
        var point = new BMap.Point(points[i].lng, points[i].lat); //將標註點轉化成地圖上的點
        var marker = new BMap.Marker(point); //將點轉化成標註點
        map.addOverlay(marker);  //將標註點添加到地圖上
        //添加監聽事件
        (function() {
            var thePoint = points[i];
            marker.addEventListener("click",
                function() {
                showInfo(this,thePoint);
            });
         })();  
    }
}
function showInfo(thisMarker,point) {
    //獲取點的信息
    var sContent = 
    '<ul style="margin:0 0 5px 0;padding:0.2em 0">'  
    +'<li style="line-height: 26px;font-size: 15px;">'  
    +'<span style="width: 50px;display: inline-block;">id:</span>' + point.id + '</li>'  
    +'<li style="line-height: 26px;font-size: 15px;">'  
    +'<span style="width: 50px;display: inline-block;">名稱:</span>' + point.name + '</li>'  
    +'<li style="line-height: 26px;font-size: 15px;"><span style="width: 50px;display: inline-block;">查看:</span><a href="'+point.url+'">詳情</a></li>'  
    +'</ul>';
    var infoWindow = new BMap.InfoWindow(sContent); //建立信息窗口對象
    thisMarker.openInfoWindow(infoWindow); //圖片加載完後重繪infoWindow
}
//建立地圖
var map = new BMap.Map("allmap");    
map.centerAndZoom(new BMap.Point(116.404, 39.915), 11);  // 設置中心點
map.centerAndZoom( "衡陽");
map.setCurrentCity("衡陽");          //設置爲衡陽
map.addControl(new BMap.MapTypeControl());   
map.enableScrollWheelZoom(true);     
addMarker(points);
</script>

 

第二種寫法函數

<!DOCTYPE html>  
<html>  
<head>  
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
    <title>添加標註點-百度地圖API</title>
    <script type="text/javascript" src="http://api.map.baidu.com/api?v=1.5&ak=YWdGplhYjUGQ3GtpKNeuTM2S"></script>
</head>  

<body>
    <style type="text/css">  
        html{height:100%}  
        body{height:100%;margin:0 10px;}  
        #container{height:100%;margin: 20px;} 
        .info_ul{
            margin:0 0 5px 0;
            padding:0.2em 0;
        } 
        .info_li{
            line-height: 26px;font-size: 15px;
        }
        .info_span{
            width: 50px;display: inline-block;
        }
    </style>    
    <div id="container"></div> 
    <script type="text/javascript"> 
        var map = new BMap.Map("container"); //初始化地圖

        var points = [
        {"lng":116,"lat":40,"url":"http://www.baidu.com","id":50,"name":"p1"},
        {"lng":117,"lat":31,"url":"http://www.taobao.com","id":2,"name":"p2"},
        {"lng":116,"lat":34,"url":"http://www.qq.com","id":3,"name":"p3"}
        ];//數據準備

        map.centerAndZoom(new BMap.Point(103.388611,35.563611), 5);//設置中心點和顯示級別。中國。
        
        map.enableScrollWheelZoom();//滾輪放大縮小。
        
        addMarker(points);//添加標註。

        function addMarker(points){  // 建立圖標對象   
            var point,marker;
            // 建立標註對象並添加到地圖   
            for(var i = 0,pointsLen = points.length;i <pointsLen;i++){
                point = new BMap.Point(points[i].lng,points[i].lat);    
                marker = new BMap.Marker(point);   
                map.addOverlay(marker); 
                //給標註點添加點擊事件。使用當即執行函數和閉包
                (function() {
                    var thePoint = points[i];
                    marker.addEventListener("click",function(){
                        showInfo(this,thePoint);
                    });
                })();
            }
        }

        //顯示信息窗口,顯示標註點的信息。
        function showInfo(thisMaker,point){
            var sContent =
            '<ul class="info_ul">'
            +'<li class="info_li">'
            +'<span class="info_span">id:</span>' + point.id + '</li>'
            +'<li class="info_li">'
            +'<span class="info_span">名稱:</span>' + point.name + '</li>'
            +'<li class="info_li"><span class="info_span">查看:</span><a href="'+point.url+'" target="_blank">詳情</a></li>'
            +'</ul>';
            var infoWindow = new BMap.InfoWindow(sContent);// 建立信息窗口對象
               thisMaker.openInfoWindow(infoWindow);//圖片加載完畢重繪infowindow
           }

        </script>  
    </body>  
    </html>

 

1.2版本和1.5版本通用,可是不用申請akui

<!doctype html>
<html>
<head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
    <meta http-equiv="Content-Type" content="text/html; charset=gbk" />
    <title>Baidu Map</title>
    <script type="text/javascript" src="http://api.map.baidu.com/api?v=1.2&services=true">
    </script>
</head>
<body>
    <div id="container" style="width: 800px; height: 600px;">
    </div>
</body>
</html>
<script type="text/javascript">

    var map = new BMap.Map("container"); //初始化地圖

    var points = [
    { "lng": 121.653872, "lat": 38.928724, "url": "http://www.baidu.com", "id": 1, "name": "麥當勞" },
    { "lng": 121.653234, "lat": 38.928604, "url": "http://www.taobao.com", "id": 2, "name": "每天魚巷" },
    { "lng": 121.64576, "lat": 38.929096, "url": "http://www.qq.com", "id": 3, "name": "好利來" },
    { "lng": 121.654402, "lat": 38.926787, "url": "http://www.qq.com", "id": 4, "name": "金銘烤肉" },
    { "lng": 121.647629, "lat": 38.927369, "url": "http://www.qq.com", "id": 5, "name": "嘉禾粥道" },
    { "lng": 121.646667, "lat": 38.925264, "url": "http://www.qq.com", "id": 6, "name": "彤德萊" },
    { "lng": 121.644799, "lat": 38.928085, "url": "http://www.qq.com", "id": 7, "name": "鼎香櫞自助" },
    { "lng": 121.646209, "lat": 38.929818, "url": "http://www.qq.com", "id": 3, "name": "風情麗江斑魚火鍋" }
    ];//數據準備

    map.centerAndZoom(new BMap.Point(121.650467, 38.927376), 16);//設置中心點和顯示級別。中國。

    map.enableScrollWheelZoom();//滾輪放大縮小。

    addMarker(points);//添加標註。

    function addMarker(points){  // 建立圖標對象
        var point,marker;
        // 建立標註對象並添加到地圖
        for(var i = 0,pointsLen = points.length;i <pointsLen;i++){
            point = new BMap.Point(points[i].lng,points[i].lat);
            marker = new BMap.Marker(point);
            map.addOverlay(marker);
            //給標註點添加點擊事件。使用當即執行函數和閉包
            (function() {
                var thePoint = points[i];
                marker.addEventListener("click",function(){
                    showInfo(this,thePoint);
                });
            })();
        }
    }

    //顯示信息窗口,顯示標註點的信息。
    function showInfo(thisMaker,point){
        var sContent =
        '<ul class="info_ul">'
        +'<li class="info_li">'
        +'<span class="info_span">id:</span>' + point.id + '</li>'
        +'<li class="info_li">'
        +'<span class="info_span">名稱:</span>' + point.name + '</li>'
        +'<li class="info_li"><span class="info_span">查看:</span><a href="'+point.url+'" target="_blank">詳情</a></li>'
        +'</ul>';
        var infoWindow = new BMap.InfoWindow(sContent);// 建立信息窗口對象
        thisMaker.openInfoWindow(infoWindow);//圖片加載完畢重繪infowindow
    }

</script>
相關文章
相關標籤/搜索