百度地图API 添加标签

1.手动创建数据,实际项目则是接受GPS信息

/建立坐标点:
// 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.创建添加标注点到地图,并为标注点添加点击事件

//创建标注点并添加到地图中
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.编写信息显示方法

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.创建地图

//创建地图
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,申请方法就不介绍了,百度一大堆.

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版本通用,但是不用申请ak

<!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>
时间: 2024-10-12 15:41:50

百度地图API 添加标签的相关文章

调用百度地图API添加点聚合时,marker标注的label标签刷新丢失问题

最近在使用百度地图API的点聚合时遇到一个问题 当将自定义的Marker(含有Label)通过MarkerClusterer 管理的时候,当地图发生任何移动.缩放 的时候,Marker 的Label 就会自动消失. 这个问题主要是由于百度的点聚合API<script type="text/javascript" src="http://api.map.baidu.com/library/MarkerClusterer/1.2/src/MarkerClusterer_mi

百度地图API多个点聚合时,标注添加的标签label地图刷新就丢失的问题解决

当将自定义的Marker(含有Label)通过MarkerClusterer 管理的时候,当地图发生任何移动.缩放 的时候,Marker 的Label 就会自动消失. 这个问题主要是由于百度的点聚合API<script type="text/javascript" src="http://api.map.baidu.com/library/MarkerClusterer/1.2/src/MarkerClusterer_min.js"></scrip

【百度地图API】建立全国银行位置查询系统(二)——怎样为地图添加控件

原文:[百度地图API]建立全国银行位置查询系统(二)--怎样为地图添加控件 <摘要>你将在第二章中学会以下知识: 使用手写代码的利器——notepad++: 如何为地图添加控件——鱼骨.鹰眼.比例尺.2D3D转换控件.版权控件. ----------------------------------------------------------------------------------------------------------------- 一.安装配置notepad++ 为什么

【百度地图API】——如何用label制作简易的房产标签

转:http://www.cnblogs.com/milkmap/archive/2011/08/24/2151073.html 摘要: 最近,API爱好者们纷纷说,自定义marker太复杂了!不仅定义复杂,连所有的dom事件都要自己重新定义.有没有快速简易创建房产标签的方法呢? 答案当然是有的啦~ 我们可以利用label嘛! ------------------------------------------------------------------------------- 一.创建地

【百度地图API】建立全国银行位置查询系统(三)——如何在地图上添加银行标注

原文:[百度地图API]建立全国银行位置查询系统(三)--如何在地图上添加银行标注 <摘要>你将在第三章中学会以下知识: 如何在地图上添加带银行logo的标注?(你也可以换成商场logo,酒店logo等) 如何在标注上显示信息窗口,以及添加文字标签等其他覆盖物: 最后,介绍一个获取坐标的给力工具. ---------------------------------------------------------------------------------------------------

百度地图API,展示地图和添加控件

1.申请百度账号和AK 点我申请 2.准备页面 根据HTML标准,每一份HTML文档都应该声明正确的文档类型,我们建议您使用最新的符合HTML5规范的文档声明: <!DOCTYPE html> 3.适应移动端页面展示 下面我们添加一个meta标签,以便使您的页面更好的在移动平台上展示. <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 4.设置容器样式

百度地图API——MarkerTool单击事件的添加

百度地图API中实现标记功能,一种是使用覆盖物中的Marker来直接实现,这么用的好处是可以直接使用官方2.0提供的各种接口,但是一些复杂需求实现起来不免有些繁琐,比如鼠标跟随的式样修改,单击后的式样变更等等. 另外一种选择是使用1.2接口中提供的MarkerTool开源库,这个现实标记功能基本是够用了(http://developer.baidu.com/map/index.php?title=open/library) 但在实现标注添加后的单击事件监听时需要对源码进行适当的修改,例如实现标记

Android应用中使用百度地图API并添加标注(一)

网上一些资料这种的内容已经过时了,这里是最新的内容,如果哪里不对,请吐槽... 1)下载百度地图移动版API(Android)开发包 要在Android应用中使用百度地图API,就需要在工程中引用百度地图API开发包,这个开发包包含两个文件: 下载地址:http://pan.baidu.com/s/1i31enrB 2)申请API Key //包名 格式:例如:B7:6C:CF:E2:47:50:9B:3E:34:F7:08:72:F3:AC:F1:BE:55:D3:77:FB;com.maji

【百度地图API】如何在地图上添加标注?——另有:坐标拾取工具+打车费用接口介绍

原文:[百度地图API]如何在地图上添加标注?--另有:坐标拾取工具+打车费用接口介绍 摘要: 在这篇文章中,你将学会,如何利用百度地图API进行标注.如何使用API新增的打车费用接口. ------------------------------------------------------------------------------------------------------- 哇,好久没有上来了.主要是因为最近工作繁忙,加上休息时间被各种排练.社团活动占满,导致木有更新此博客.