首页 > 代码库 > [Baidu Map]百度地图 JAVASCRIPT API V2.0 大众版 工具类

[Baidu Map]百度地图 JAVASCRIPT API V2.0 大众版 工具类

关键代码:

/* *@description 百度地图 JAVASCRIPT API V2.0 大众版 工具类  *@author YanZhiwei *@see http://developer.baidu.com/map/reference/index.php *@email Yan.Zhiwei@hotmail.com */(function () {    map = {};    infoWindow = {};    BmapUtils = {        CONSTANT: {            DYNAMIC_CITY: "上海",            CONTAINER: "baidumap",            DEFAULT_ZOOM: 13,            DEFAULT_INIT_ZOOM: 12,            DEFAULT_MAX_ZOOM: 18,            DEFAULT_MIN_ZOOM: 8        },        initNormalMap: function (lon, lat, zoom, maxzoom, minzoom) {            /// <summary>            /// 基本地图初始化            /// </summary>            /// <param name="lon">纬度</param>            /// <param name="lat">经度</param>            /// <param name="zoom">显示级别</param>            /// <param name="maxzoom">地图最大级别</param>            /// <param name="minzoom">地图最小级别</param>            map = new BMap.Map(this.CONSTANT.CONTAINER, { enableMapClick: false });            var point = new BMap.Point(lon || 116.331398, lat || 39.897445); // 默认地图初始化位置为北京            map.centerAndZoom(point, zoom || this.CONSTANT.DEFAULT_INIT_ZOOM);            map.enableDragging(); // 开启拖拽            map.setMinZoom(minzoom || this.CONSTANT.DEFAULT_MIN_ZOOM);//地图最小级别            map.setMaxZoom(maxzoom || this.CONSTANT.DEFAULT_MAX_ZOOM);//地图最小级别            map.enableScrollWheelZoom(true); // 允许鼠标滚轮缩放地图            map.addControl(new BMap.NavigationControl(BMAP_ANCHOR_TOP_LEFT)); // 添加默认缩放平移控件            map.addControl(new BMap.ScaleControl({ anchor: BMAP_ANCHOR_BOTTOM_LEFT })); // 左下角比例尺控件            map.addControl(new BMap.OverviewMapControl()); // 添加默认缩略地图控件(鹰眼)            var cr = new BMap.CopyrightControl({ anchor: BMAP_ANCHOR_BOTTOM_LEFT });            map.addControl(cr); // 添加版权控件(支持自定义版权控件)        },        addMapView: function () {            /// <summary>            /// 添加地图视图_普通街道_卫星视图_卫星和路网的混合            /// </summary>            if (map)                map.addControl(new BMap.MapTypeControl({ mapTypes: [BMAP_NORMAL_MAP, BMAP_SATELLITE_MAP, BMAP_PERSPECTIVE_MAP] }));        },        addMarker: function (marker) {            /// <summary>            /// 将标记添加到地图            /// </summary>            /// <param name="marker">标记</param>            if (map)                map.addOverlay(marker);        },        focused: function (point, zoom) {            /// <summary>            /// 聚焦点            /// </summary>            /// <param name="point">point</param>            /// <param name="zoom">级别</param>            if (point) {                var bounds = map.getBounds();                map.centerAndZoom(point, zoom || this.CONSTANT.DEFAULT_ZOOM);                if (!bounds.containsPoint(point)) {                    setTimeout(function () {                        map.panTo(point);                    }, 500);                }            }        }    };    BmapUtils.tool = {        CONSTANT: {            RANDOM_NUMER: 100        },        addRandomInViewRange: function (number) {            /// <summary>            /// 在可视区域内添加随机标记            /// 默认99个            /// </summary>            /// <param name="number">标记个数</param>            if (map) {                var bounds = map.getBounds();                var sw = bounds.getSouthWest();                var ne = bounds.getNorthEast();                var lngSpan = Math.abs(sw.lng - ne.lng);                var latSpan = Math.abs(ne.lat - sw.lat);                var mkNumber = number || this.CONSTANT.RANDOM_NUMER;                for (var i = 0; i < mkNumber ; i++) {                    var marker = BmapUtils.marker.addWithTitle(sw.lng + lngSpan * (Math.random() * 0.7), ne.lat - latSpan * (Math.random() * 0.7), i);                    marker.id = i;                    BmapUtils.marker.setInfoWindow(marker, "上海啊上海啊", ‘‘, ‘122‘);                    BmapUtils.marker.setLable(marker, i);                    BmapUtils.addMarker(marker);                }            }        }    };    BmapUtils.overlays = {        find: function (properties, value) {            /// <summary>            /// 查找覆盖物            /// </summary>            /// <param name="properties">键</param>            /// <param name="value">值</param>            /// <returns type="">找到则返回覆盖物;若没找到则返回NULL</returns>            var overlays = map.getOverlays();            for (var i = 0; i < overlays.length; i++) {                var overlay = overlays[i];                if (overlay[properties] == value)                    return overlay;            }        },        findAll: function (properties, value) {            /// <summary>            /// 查找符合条件覆盖物的集合            /// </summary>            /// <param name="properties">键</param>            /// <param name="value">值</param>            /// <returns type="">Array</returns>            var finded = new Array;            var overlays = map.getOverlays();            for (var i = 0; i < overlays.length; i++) {                var overlay = overlays[i];                if (overlay[properties] == value)                    finded.push(overlay);            }            return finded;        },        count: function () {            var overlays = map.getOverlays();            return overlays.length;        },        show: function (properties, value) {            /// <summary>            /// 查找覆盖物并显示            /// </summary>            /// <param name="properties">键</param>            /// <param name="value">值</param>            var overlay = this.find(properties, value);            if (overlay) {                overlay.show();            }        },        remove: function (properties, value) {            /// <summary>            /// 查找覆盖物并删除            /// </summary>            /// <param name="properties">键</param>            /// <param name="value">值</param>            var overlay = this.find(properties, value);            if (overlay) {                map.removeOverlay(overlay);            }        },        hide: function (properties, value) {            /// <summary>            /// 查找覆盖物并隐藏            /// </summary>            /// <param name="properties">键</param>            /// <param name="value">值</param>            var overlay = this.find(properties, value);            if (overlay) {                overlay.hide();            }        },        clearAll: function () {            /// <summary>            /// 清除地图上所有的覆盖物            /// </summary>            map.clearOverlays();        }    };    BmapUtils.marker = {        add: function (lon, lat) {            /// <summary>            /// 创建地图标记            /// 说明:需要 map.addOverlay(marker)或MarkerManger进行管理            /// </summary>            /// <param name="lon">纬度</param>            /// <param name="lat">经度</param>            /// <returns type="">BMap.Marker</returns>            if (map) {                var marker = new BMap.Marker(new BMap.Point(lon, lat));                return marker;            }        },        addWithTitle: function (lon, lat, title) {            /// <summary>            ///创建标记并且设置toolTip文字            ///说明:需要 map.addOverlay(marker)或MarkerManger进行管理            /// </summary>            /// <param name="lon">纬度</param>            /// <param name="lat">经度</param>            /// <param name="title">toolTip文字</param>            /// <returns type="">BMap.Marker</returns>            var marker = BmapUtils.marker.add(lon, lat);            marker.setTitle(title);            return marker;        },        setLable: function (marker, name) {            /// <summary>            /// 设置标记显示名称            /// </summary>            /// <param name="marker">标记</param>            /// <param name="name">显示名称</param>            if (marker) {                var label = new BMap.Label(name, {                    offset: new BMap.Size(20, -10)                });                marker.setLabel(label);            }        },        setIcon: function (marker, iconpath, size) {            /// <summary>            /// 设置标记图标            /// </summary>            /// <param name="marker">标记</param>            /// <param name="iconpath">图标路径</param>            /// <param name="size">BMap.Size</param>            if (marker) {                var icon = new BMap.Icon(iconpath, size);                marker.setIcon(icon);            }        },        findInBounds: function (properties, value) {            /// <summary>            /// 查找可视范围内标记            /// </summary>            /// <param name="properties">键</param>            /// <param name="value">值</param>            /// <returns type="">若查找到则返回BMap.Marker;若查找不到则返回NULL</returns>            var bounds = map.getBounds();            var overlays = map.getOverlays();            for (var i = 0; i < overlays.length; i++) {                var overlay = overlays[i];                if (bounds.containsPoint(overlay.getPosition())) {                    if (overlay[properties] == value)                        return overlay;                }            }            return null;        },        findAllInBounds: function (properties, value) {            /// <summary>            /// 查找可视范围内符合条件标记的集合            /// </summary>            /// <param name="properties"></param>            /// <param name="value"></param>            /// <returns type=""></returns>            var finded = new Array;            var bounds = map.getBounds();            var overlays = map.getOverlays();            for (var i = 0; i < overlays.length; i++) {                var overlay = overlays[i];                if (bounds.containsPoint(overlay.getPosition())) {                    if (overlay[properties] == value)                        finded.push(overlay);                }            }            return finded;        },        focused: function (marker, zoom) {            /// <summary>            /// 标记聚焦            /// </summary>            /// <param name="marker">标记</param>            /// <param name="zoom">缩放级别</param>            var point = marker.getPosition();            BmapUtils.focused(point, zoom);        },        showInfoWindow: function (marker, title, message, htmlElement) {            /// <summary>            /// 显示InfoWindow            /// </summary>            /// <param name="marker">标记</param>            /// <param name="title">信息窗标题文字</param>            /// <param name="message">自定义部分的短信内容</param>            /// <param name="htmlElement">htmlElement</param>            var point = marker.getPosition();            BmapUtils.infoWindow.add(point, title, message, htmlElement, true);        },        setInfoWindow: function (marker, title, message, htmlElement) {            /// <summary>            /// 设置marker标记点击时候展现的InfoWindow            /// </summary>            /// <param name="marker">标记</param>            /// <param name="title">信息窗标题文字</param>            /// <param name="message">自定义部分的短信内容</param>            /// <param name="htmlElement">htmlElement</param>            marker.addEventListener("click", function () {                infoWindow = BmapUtils.infoWindow.create(title, message, htmlElement);                marker.openInfoWindow(infoWindow);            });        }    };    BmapUtils.infoWindow =        {            create: function (title, message, htmlElement) {                var sendMessage = false;                if (message)                    sendMessage = true;                var opts = {                    width: 100, //信息窗宽度,单位像素                    height: 50, //信息窗高度,单位像素                    title: title, // 信息窗标题文字,支持HTML内容                    enableMessage: sendMessage, // 设置允许信息窗发送短息                    message: message// 自定义部分的短信内容,可选项。完整的短信内容包括:自定义部分+位置链接,不设置时,显示默认短信内容。                };                infoWindow = new BMap.InfoWindow(htmlElement, opts); // 创建信息窗口对象                return infoWindow;            },            add: function (point, title, message, htmlElement, focused) {                /// <summary>                /// 为point添加infoWindow对象                /// </summary>                /// <param name="point">point</param>                /// <param name="title">信息窗标题文字</param>                /// <param name="message">自定义部分的短信内容</param>                /// <param name="htmlElement">htmlElement</param>                /// <param name="focused">是否聚焦</param>                if (point) {                    infoWindow = this.create(title, message, htmlElement);                    map.openInfoWindow(infoWindow, point);                    if (focused) {                        BmapUtils.focused(point, map.getZoom());                    }                }            }        };})();
<style type="text/css">.csharpcode, .csharpcode pre{ font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em;}.csharpcode .lnum { color: #606060; }</style>

测试代码:

<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head>    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />    <title></title>    <script src="Scripts/jquery-1.7.1.js"></script>    <script type="text/javascript" src=http://www.mamicode.com/"http://api.map.baidu.com/api?v=2.0&ak=uGL4KNjgj6qoH3bGu346o4WT"></script>    <script src=http://www.mamicode.com/"BMapUtilsV2.js"></script>    <script type="text/javascript">        $(document).ready(function () {            BmapUtils.initNormalMap();            BmapUtils.addMapView();            BmapUtils.tool.addRandomInViewRange();        });    </script></head><body>    <div id="baidumap" style="height:800px;width:100%"></div>    <br />    <input id="Button1" type="button" value="addRandomInViewRange" onclick="BmapUtils.tool.addRandomInViewRange()" />    <input id="Button2" type="button" value="count" onclick=" alert(BmapUtils.overlays.count());" />    <input id="Button3" type="button" value="findall" onclick="alert(BmapUtils.overlays.findAll(‘id‘, ‘99‘).length);" />    <input id="Button3" type="button" value="findAllInBounds" onclick="alert(BmapUtils.marker.findAllInBounds(‘id‘, ‘99‘).length);" />    <input id="Button3" type="button" value="findInBounds" onclick="alert(BmapUtils.marker.findInBounds(‘id‘, ‘99‘).id);" />    <input id="Button4" type="button" value="hide" onclick="BmapUtils.overlays.hide(‘id‘, ‘99‘)" />    <input id="Button5" type="button" value="show" onclick="BmapUtils.overlays.show(‘id‘, ‘99‘)" />    <input id="Button5" type="button" value="focused" onclick="BmapUtils.marker.focused( BmapUtils.overlays.find(‘id‘, ‘99‘))" />    <input id="Button5" type="button" value="showInfoWindow" onclick="BmapUtils.marker.showInfoWindow( BmapUtils.overlays.find(‘id‘, ‘99‘),‘demo‘,‘‘,‘123‘)" /></body></html>
<style type="text/css">.csharpcode, .csharpcode pre{ font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em;}.csharpcode .lnum { color: #606060; }</style>
项目目录:
image
运行效果:
image
希望有所帮助!
<style type="text/css">.csharpcode, .csharpcode pre{ font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em;}.csharpcode .lnum { color: #606060; }</style>

[Baidu Map]百度地图 JAVASCRIPT API V2.0 大众版 工具类