/*** 百度地图使用工具类-v1.5* * @author boonya* @date 2013-7-7* @address Chengdu,Sichuan,China* @email boonya@sina.com* @company KWT.Shenzhen.Inc.com* @notice 有些功能需要加入外部JS库才能使用,另外还需要申请地图JS key .*         申请地址:http://developer.baidu.com/map/apply-key.htm*/
(function() {var map = {};window.map={};window.BmapUtils={};window.infoWindow={};window.BmapUtils.lineFreature={};window.LocalSearch={};/*** 百度地图基础操作*/BmapUtils = {/*** 全局变量*/CONSTANT : {CONTAINER : "map",DEFAULT_ZOOM : 12,SEARCH_PANEL:"r-result",LINE_MAKERS_SHOW:false},/*** 获取地图视图范围坐标* @returns {object} 范围对象*/getBounds : function() {if (map) {var bs = map.getBounds(); // 获取可视区域var bssw = bs.getSouthWest(); // 可视区域左下角var bsne = bs.getNorthEast(); // 可视区域右上角return {leftBottom : bssw,rightTop : bsne};}return null;},/*** 设置车辆图标* @param carImgUrl  {string}            车辆图片路径* @returns {BMap.Icon}                  百度Icon图标对象*/getIcon : function(carImgUrl,width,height) {var myIcon = new BMap.Icon(carImgUrl, new BMap.Size(width||20, height||20), { // 小车图片// offset: new BMap.Size(0, -5), //相当于CSS精灵imageOffset : new BMap.Size(0, 0)// 图片的偏移量。为了是图片底部中心对准坐标点。
            });return myIcon;},/*** 初始化普通地图* @param lon            {number} 经度* @param lat            {number} 纬度* @param zoom           {number} 缩放等级*/initCommonMap : function(lon, lat, zoom) {map = new BMap.Map(this.CONSTANT.CONTAINER);var point = new BMap.Point(lon || 116.331398, lat || 39.897445); // 默认地图初始化位置为北京map.centerAndZoom(point, zoom || this.CONSTANT.DEFAULT_ZOOM);},/*** 初始化3D地图* @param lon            {number} 经度* @param lat            {number} 纬度* @param cityname       {string} 城市名称* @param zoom           {number} 缩放等级*/my3Dmap : function(lon, lat, cityname, zoom) {map = new BMap.Map(this.CONSTANT.CONTAINER, {mapType : BMAP_PERSPECTIVE_MAP});var point = new BMap.Point(lon || 116.4035, lat || 39.915);map.setCurrentCity(cityname || "北京"); // 设置地图显示的城市 此项是必须设置的map.centerAndZoom(point, zoom || this.CONSTANT.DEFAULT_ZOOM);map.enableScrollWheelZoom(true);},/*** 初始化卫星地图* @param lon            {number} 经度* @param lat            {number} 纬度* @param zoom           {number} 缩放等级*/satelliteMap : function(lon, lat, zoom) {map = new BMap.Map(this.CONSTANT.CONTAINER, {mapType : BMAP_HYBRID_MAP}); // 设置卫星图为底图var point = new BMap.Point(lon || 116.4035, lat || 39.915);map.centerAndZoom(point, zoom || this.CONSTANT.DEFAULT_ZOOM);map.enableScrollWheelZoom(true);},/*** 初始化地图(含普通操作控件)*/initBaiduMap:function(anchor){BmapUtils.initCommonMap(); // 初始化普通地图map.enableDragging(); // 开启拖拽// map.disableDragging(); // 禁止拖拽// map.enableInertialDragging(); // 开启惯性拖拽map.enableScrollWheelZoom(true); // 允许鼠标滚轮缩放地图var navigtionControl=anchor||{anchor : BMAP_ANCHOR_TOP_LEFT};map.addControl(new BMap.NavigationControl(navigtionControl)); // 添加默认缩放平移控件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); // 添加版权控件(支持自定义版权控件)window.map=map;},/*** 初始化小地图* @param type  {number}     平移缩放类型:平移和缩放1,只有平移2,只有缩放3,默认只有缩放* @param position {number}  停靠的位置:上左1,上右2,下左3,下右4,默认为上左*/smallMap:function(type,position){BmapUtils.initCommonMap(); // 初始化普通地图map.enableDragging(); // 开启拖拽map.enableScrollWheelZoom(true); // 允许鼠标滚轮缩放地图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});var navigtion_type="",where="";//平移导航的类型switch (type) {case 1:navigtion_type=BMAP_NAVIGATION_CONTROL_SMALL;break;case 2:navigtion_type=BMAP_NAVIGATION_CONTROL_PAN;break;case 3:navigtion_type=BMAP_NAVIGATION_CONTROL_ZOOM;break;default:navigtion_type=BMAP_NAVIGATION_CONTROL_ZOOM;break;}//平移导航停靠的位置switch (position) {case 1:where=BMAP_ANCHOR_TOP_LEFT;break;case 2:where=BMAP_ANCHOR_TOP_RIGHT;break;case 3:where=BMAP_ANCHOR_BOTTOM_LEFT;break;case 4:where=BMAP_ANCHOR_BOTTOM_LEFT;break;default:where=BMAP_ANCHOR_TOP_LEFT;break;}map.addControl(cr); // 添加版权控件(支持自定义版权控件)map.addControl(new BMap.NavigationControl({anchor: where, type: navigtion_type})); LocalSearch=new BMap.LocalSearch(map, {renderOptions:{map: map,panel:this.CONSTANT.SEARCH_PANEL}});window.map=map;},/*** IP定位城市*/ipLocateCity : function() {var myFun = function(result) {var cityName = result.name;map.setCenter(cityName);};var myCity = new BMap.LocalCity();myCity.get(myFun);},/*** 平移地图* @param lon            {number} 经度* @param lat            {number} 纬度*/panTo : function(lon, lat) {var point = new BMap.Point(lon, lat);map.panTo(point);},/*** 平移地图* @param lon            {number} 经度* @param lat            {number} 纬度*/panToPoint: function(point) {map.panTo(point);},/*** 创建信息窗口* @param title    {string}  标题* @param message  {string}  发送短信消息内容* @param divContent  {string}  文本内容* @returns {BMap.InfoWindow}   信息对象*/createInfoWindow:function(title,message,divContent){var sendMessage=false;if(message) sendMessage=true;var opts = {width : 97, // 信息窗口宽度height : 95, // 信息窗口高度title : title, // 信息窗口标题enableMessage : sendMessage, // 设置允许信息窗发送短息message : message            // 允许发送短信
            };window.infoWindow = new BMap.InfoWindow(divContent, opts); // 创建信息窗口对象return window.infoWindow;},/*** 打开一个信息窗口* @param title   {string}      信息标题* @param message   {string}    需要发送的信息* @param divContent   {string} 信息内容* @param point   {object}      百度坐标点*/addInfoWindow : function(title,message,divContent,point,isCenter) {window.infoWindow=this.createInfoWindow(title, message, divContent);window.infoWindow.enableAutoPan();map.openInfoWindow(window.infoWindow, point); // 开启信息窗口if(isCenter)map.setCenter(point);},/*** 获取地图上打开的信息窗口* @returns  object||null*/getOpendInfoWindow:function(){return map.getInfoWindow();},/*** 重绘信息窗口* @param  信息窗口对象*/redrawInfoWindow:function(){window.infoWindow.redraw();},/*** 居中和缩放* @param point     {object} 百度坐标点* @param zoomLevel {number} 缩放等级*/centerAndZoom:function(point,zoomLevel){map.setCenter(point);map.setZoom(zoomLevel);}};/*** 百度要素操作工具*/BmapUtils.tootls = {/*** 越界控制*/handleFeatureInBounds:function(point) {var bounds =map.getBounds();if (!bounds.containsPoint(point)){map.panTo(point); // 是否在视图范围之内,若跃出视图则平滑居中
            }},/*** 测量两点的距离* @param pointA            百度坐标点A* @param pointB            百度坐标点B* @return {number}         距离大小:单位:米(meter)*/distance : function(pointA, pointB) {return map.getDistance(pointA, pointB); // 获取两点距离
        },/*** 添加Marker对象* @param title            {String}  toolTip文字* @param point            {object}  百度坐标点对象* @param name             {string}  显示名称* @param showLabel        {boolean} 是否显示标注的文本* @param myIcon           {boolean} Icon图片对象*/addMarker : function(title,point, name, showLabel,myIcon) {var marker = new BMap.Marker(point,{icon:myIcon});if (showLabel) {var label = new BMap.Label(name, {offset : new BMap.Size(20, -10)});marker.setLabel(label);}marker.setTitle(title);map.addOverlay(marker);return marker;},/*** 定位添加marker坐标* @param lon            {number} 经度* @param lat            {number} 纬度* @param isShow         {boolean} 系统打开或关闭*/addMarkerDisplayOrUnDisplay : function(lon, lat, isShow) {var marker = new BMap.Marker(new BMap.Point(lon, lat)); // 创建标注marker.prototype=new  BMap.Overlay();map.addOverlay(marker); // 将标注添加到地图中if (isShow) {marker.show();} else {marker.hide();}},/*** 添加折线(轨迹)*  @param points       百度坐标对象集合*/addLineFeature : function(points,style) {var default_style={strokeColor : "#3976F0",strokeWeight : 3,strokeOpacity : 0.5};var polyline = new BMap.Polyline(points,style|| default_style );map.addOverlay(polyline); // 添加折线到地图上return polyline;},/*** 添加折线(轨迹,包括起点、终点)* @param sepoint                  {object} 起终点的名称.start ,.end* @param points                {array} 原始JSON坐标对象集合* @param startImageUrk         {string} 起点图片路径* @param endImageUrk           {string} 终点图片路径*/addLineFeatureAndStartAndEndPoint : function(sepoint,points, startImageUrk,    endImageUrk,lineStyle) {var len=points.length;var index =len - 1;var startPoint = points[0];var endPoint =points[index];var startIcon = BmapUtils.getIcon(startImageUrk,20,20);startIcon.setImageSize(new BMap.Size(20,20));var endIcon = BmapUtils.getIcon(endImageUrk,20,20);endIcon.setImageSize(new BMap.Size(20,20));var startMarker = new BMap.Marker(startPoint, {icon : startIcon});var endMarker = new BMap.Marker(endPoint, {    icon : endIcon});startMarker.setTitle(sepoint.start);endMarker.setTitle(sepoint.end);if(len>=2){var d=(len/2)+"";d=parseInt(d);map.centerAndZoom(points[d],12);}this.addLineFeature(points,lineStyle);map.addOverlay(startMarker);map.addOverlay(endMarker);},/*** 路径规划* * @param startPoint     {object} 起点* @param endPoint       {object} 终点* @param carImgUrl      {string} 车辆图片路径*/roadPlanToRun : function(startPoint, endPoint, carImgUrl) {var driving2 = new BMap.DrivingRoute(map, {renderOptions : {map : map,autoViewport : true}}); // 驾车实例driving2.search(startPoint, endPoint); // 显示一条公交线路var run = function() {var driving = new BMap.DrivingRoute(map); // 驾车实例
                driving.search(myP1, myP2);driving.setSearchCompleteCallback(function() {var pts = driving.getResults().getPlan(0).getRoute(0).getPath(); // 通过驾车实例,获得一系列点的数组var paths = pts.length; // 获得有几个点var carMk = new BMap.Marker(pts[0], {icon : BmapUtils.getIcon(carImgUrl)});map.addOverlay(carMk);i = 0;function resetMkPoint(i) {carMk.setPosition(pts[i]);if (i < paths) {setTimeout(function() {i++;resetMkPoint(i);}, 100);}}setTimeout(function() {resetMkPoint(5);}, 100);});};setTimeout(function() {run();}, 500);},/*** 轨迹回放* @param points        {Array} 百度坐标点集合* @param carImgUrl     {string} 车辆图片的地址*/trackPlay : function(points, carImgUrl) {var carMk = new BMap.Marker(points[0], {icon : BmapUtils.getIcon(carImgUrl)});map.addOverlay(carMk);var i = 0;function resetMkPoint(i) {carMk.setPosition(points[i]);if (i < paths) {setTimeout(function() {i++;resetMkPoint(i);}, 100);}}setTimeout(function() {resetMkPoint(i);}, 100);},/*** 添加圆* @param lon     {number} 经度* @param lat     {number} 纬度* @param radius{number}   半径*/addCircle : function(lon, lat, radius) {var point = new BMap.Point(lon, lat);map.centerAndZoom(point, 16);var circle = new BMap.Circle(point, radius);map.addOverlay(circle);},/*** 添加多边形* @param points {array} 百度坐标点集合*/addPolygon : function(points) {var polygon = new BMap.Polygon(points, {strokeColor : "blue",strokeWeight : 3,strokeOpacity : 0.5});map.addOverlay(polygon);},/*** 根据用户覆盖物的标识属性获取覆盖物* @param properties  {string} 属性名称* @param nodeId      {string} 属性字段的值*/getOverlayByNodeId:function(properties,value){var overlays=map.getOverlays();for ( var i = 0,le=overlays.length; i < le; i++) {var overlay=overlays[i];if(overlay[properties]==value){return overlay;}}return null;},/*** 根据用户覆盖物的标识属性显示覆盖物* * @param properties  {string} 属性名称* * @param nodeId      {string} 属性字段的值*/showOverlay:function(properties,value){var overlay=this.getOverlayByNodeId(properties, value);overlay.show();},/*** 根据用户覆盖物的标识属性隐藏覆盖物* @param properties  {string} 属性名称* @param nodeId      {string} 属性字段的值*/hideOverlay:function(properties,value){var overlay=this.getOverlayByNodeId(properties, value);overlay.hide();},/*** 根据用户覆盖物的标识属性移除覆盖物* @param properties  {string} 属性名称* @param nodeId      {string} 属性字段的值*/removeOverlay:function(properties,value){var overlay=this.getOverlayByNodeId(properties, value);if(overlay) map.removeOverlay(overlay);},/*** 删除地图上所有覆盖物*/removeAllOverlays:function(){map.clearOverlays();},/*** 控制缩放层级显示图标显示或隐藏* @param markers {array}  标注数组* @param zoom {number}    缩放等级*/controlMakersHideOrShowByZoom:function(markers,zoom){if(markers){var map_zoom=map.getZoom();if(map_zoom<zoom){for ( var i = 0; i < markers.length; i++) {var overlay=markers[i];if(overlay){overlay.prototype=new BMap.Overlay();overlay.hide();}}BmapUtils.CONSTANT.LINE_MAKERS_SHOW=false;}else{if(BmapUtils.CONSTANT.LINE_MAKERS_SHOW==false){for ( var i = 0; i <markers.length; i++) {var overlay=markers[i];if(overlay){overlay.prototype=new BMap.Overlay();overlay.show();}}BmapUtils.CONSTANT.LINE_MAKERS_SHOW=true;}}}}};/*** 百度探索处理*/BmapUtils.search = {/*** 本地探索(含自动提示)* @param inputSuggestId         {string} 输入框的id属性* @param searchResultPanelId    {string} 结果面板的id属性*/localSearch : function(inputSuggestId, searchResultPanelId) {function G(id) {return document.getElementById(id);}var ac = new BMap.Autocomplete( // 建立一个自动完成的对象
            {"input" : inputSuggestId,"location" : map});ac.addEventListener("onhighlight", function(e) { // 鼠标放在下拉列表上的事件var str = "";var _value = e.fromitem.value;var value = "";if (e.fromitem.index > -1) {value = _value.province + _value.city + _value.district+ _value.street + _value.business;}str = "FromItem<br />index = " + e.fromitem.index+ "<br />value = " + value;value = "";if (e.toitem.index > -1) {_value = e.toitem.value;value = _value.province + _value.city + _value.district+ _value.street + _value.business;}str += "<br />ToItem<br />index = " + e.toitem.index+ "<br />value = " + value;G(searchResultPanelId).innerHTML = str;});var myValue = "", local = {};var setPlace = function() {map.clearOverlays(); // 清除地图上所有覆盖物function myFun() {var pp = local.getResults().getPoi(0).point; // 获取第一个智能搜索的结果map.centerAndZoom(pp, 18);map.addOverlay(new BMap.Marker(pp)); // 添加标注
                }local = new BMap.LocalSearch(map, { // 智能搜索
                    onSearchComplete : myFun});local.search(myValue);};ac.addEventListener("onconfirm", function(e) { // 鼠标点击下拉列表后的事件var _value = e.item.value;myValue = _value.province + _value.city + _value.district+ _value.street + _value.business;G(searchResultPanelId).innerHTML = "onconfirm<br />index = "+ e.item.index + "<br />myValue = " + myValue;setPlace();});},/*** POI查询* @param inputId {string}  输入框id属性名称*/poiSearch:function(inputId){var poiInfo=$("#"+inputId).val();var mapZoom=map.getZoom();if(mapZoom<12){$.messager.alert("提示", "当前搜索面积太广,请将地图放大到市级别后再搜索", "warning");return ;}if(poiInfo==""){$.messager.alert("提示", "请输入搜索关键字", "warning");return ;}LocalSearch.searchInBounds(poiInfo, map.getBounds());}};/*** 百度地图自定义控件*/BmapUtils.control={/*** 轨迹回放操作菜单控件*/addTrakPalyControl:function(){function TrackControl(){// 默认停靠位置和偏移量this.defaultAnchor = BMAP_ANCHOR_BOTTOM_RIGHT;this.defaultOffset = new BMap.Size(10, 20);}// 通过JavaScript的prototype属性继承于BMap.ControlTrackControl.prototype = new BMap.Control();// 自定义控件必须实现自己的initialize方法,并且将控件的DOM元素返回// 在本方法中创建个div元素作为控件的容器,并将其添加到地图容器中TrackControl.prototype.initialize = function(map){// 创建一个DOM元素// var mapContainerDiv= map.getContainer();var div=document.createElement("div");// 创建节点内容var htmlContent='<div class="playDiv" style="z-index: 1000;position: absolute; right: 10px; bottom: 20px;">'+'<div class="f-right ml20">'+'<input id="slider_" class="easyui-slider" style="width:200px;background-color: orange;" data-options="showTip:true,min:0,step:10,max:100,rule:[0,'|',10,'|',20,'|',30,'|',40,'|',50,'|',60,'|',70,'|',80,'|',90,'|',100],tipFormatter:function(v){return v+'%';},onSlideEnd:function(value){process(value);}"  style="float:left"/>'+' </div>'+'<div class="f-right" id="uoptions">'+' <a id="thisplay" href="javascript:void(0)" οnclick="playOrReplay()" class="easyui-linkbutton" data-options="disabled:true">播放</a> '+' <a id="thispause" href="javascript:void(0)" οnclick="pauseOrgo(1)" class="easyui-linkbutton" data-options="disabled:true">暂停</a> '+' <a id="thiscontinue" href="javascript:void(0)" οnclick="pauseOrgo(2)" class="easyui-linkbutton" data-options="disabled:true">继续</a> '+' <a id="export" href="javascript:void(0)" οnclick="reportorExport()" class="easyui-linkbutton" data-options="disabled:true">导出</a> '+'</div></div>';var  playDiv=document.createTextNode(document.createTextNode(htmlContent));// 添加文字说明
                     div.appendChild(playDiv);// 将DOM元素返回return div;};// 创建控件var myTrackCtrol = new TrackControl();// 添加到地图当中
                map.addControl(myTrackCtrol);}};/*** 地图事件*/BmapUtils.event={zoomed:function(markers,zoom){map.addEventListener("zoomend",function(){BmapUtils.tootls.controlMakersHideOrShowByZoom(markers, zoom);});},removeZoomed:function(markers,zoom){map.removeEventListener("zoomend",function(){BmapUtils.tootls.controlMakersHideOrShowByZoom(markers, zoom);});}};})();

 注:添加百度地图v1.5

<script src="http://api.map.baidu.com/api?v=1.5&ak=${ak }"></script>
<script type="text/javascript"  src="${ctx}/res/js/baidumap/bmap.util.js"></script>

ak:即百度地图凭证key,需要自己申请

转载于:https://www.cnblogs.com/boonya/p/3215015.html

百度地图LV1.5实践项目开发工具类bmap.util.jsV1.0相关推荐

  1. 百度地图LV1.5实践项目开发工具类bmap.util.jsV1.2

    /*** 百度地图使用工具类-v1.5* * @author boonya* @date 2013-7-7* @address Chengdu,Sichuan,China* @email boonya ...

  2. 自己收藏的百度地图批量描点获取坐标工具类

    直接上代码!!! <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" ...

  3. .net项目开发工具最新动态

    .net项目开发工具(V2.1) : http://www.cnblogs.com/mrhgw/archive/2007/06/04/770278.html 2007-6-7号: ---------- ...

  4. 多平台移动项目开发工具Elements发布v9.1,支持Visual Studio 2017

    2019独角兽企业重金招聘Python工程师标准>>> Elements是一款多平台移动项目开发工具软件,它包含Oxygene.C#.Swift三种编程语言和相关工具,并且提供这三种 ...

  5. 前端及后端项目开发工具

    1 前端项目开发工具:构建Vue项目 开发工具:HBuilder 作用:用来创建vue项目 web中间件:nodejs nodejs作用:用来解析开发者写好的js.jQuery.vue代码. 项目管理 ...

  6. 开源集锦(五)开源框架和快速开发工具类

    Volley https://github.com/stormzhang/AndroidVolley http://blog.csdn.net/t12x3456/article/details/922 ...

  7. uni-app项目开发-----初级入门教程(从0到1制作打包自己的app)

    uni-app项目开发-----初级入门教程(从0到1制作打包自己的app) uni-app实现了一套代码,同时运行到多个平台.支持iOS模拟器.Android模拟器.H5.微信开发者工具.支付宝小程 ...

  8. android 快速开发工具类,android面试知识点

    项目地址:570622566/FastAndrUtils  简介:android 快速开发工具类 更多:作者   提 Bug   官网 标签: Fastandrutils 是一套整理修改整合的 and ...

  9. (转载)项目实战工具类(一):PhoneUtil(手机信息相关)

    项目实战工具类(一):PhoneUtil(手机信息相关) 可以使用的功能: 1.获取手机系统版本号 2.获取手机型号 3.获取手机宽度 4.获取手机高度 5.获取手机imei串号 ,GSM手机的 IM ...

  10. 微信小程序人脸核身---快速入门到实战(附开发工具类,复制即用)

    文章目录 一.基本介绍 1.概述 2.功能特点 3.使用场景 二.术语概述 基础参数说明 DetectAuth(实名核身鉴权) GetDetectInfo(获取实名核身结果信息) 三.基本接口说明使用 ...

最新文章

  1. word怎么根据点画曲线_圆锥曲线联解公式
  2. python的concat函数_python concat函数
  3. 关于面向对象的的设计原则的使用
  4. Redis文档阅读笔记-Pub/Sub官方解析
  5. Ajax Login Sample
  6. 基于JAVA+SpringMVC+MYSQL的火车票订票系统
  7. Redis命令行之Hash
  8. 呼叫中心职场EQ与情绪压力管控(时刻提醒自己!)
  9. K3/Cloud 用插件打开一张已存在的单据
  10. JS放大镜小功能功能之原理详细解析
  11. Kotlin 使用DSL构建语法结构 看这一篇就够了~
  12. 记住键盘快捷键大全 提高电脑操作速度
  13. windows embed sapi php,19.1 嵌入式SAPI
  14. 支付宝称:已支持微信转账,结果被骂惨了...
  15. Discuz 批量修改、替换帖子标题或内容
  16. UBUNTU使用RTL8811CU网卡(包含树莓派)
  17. linux怎么卸载mailx,Linux下mail/mailx命令发送邮件
  18. 支持向量机(SVM)、支持向量回归(SVR)
  19. VLAN与PVLAN的区别
  20. 复利计算--结对1.0,做汉堡,结对2.0-复利计算再升级

热门文章

  1. NFC Antenna Tool,便捷的 NFC 电路 和 NFC 线圈设计工具
  2. UNI-APP,动态设置view的背景图片
  3. canvas画不规则图形
  4. 拓嘉辰丰电商:关于拼多多推广计划有哪些问题
  5. java类 家族成员 姓氏_极其罕见的四大姓氏,若你还姓这个,恭喜你,你的家族大有来头!...
  6. OSPF-LSA详解
  7. mysql 自增 空洞_MySQL auto_increment空洞问题
  8. 【记录】一个自动投票的小程序(python实现)
  9. ABP AOP 用例
  10. 【高级数据结构】线段树 | 求区间和