在项目里看在之前不知哪位程序员的大作,觉得挺好,就给摘下来了。
<!--bootstrap tab-->
<a href="#profile3" class="tabtn" id="around" rel="1" data-toggle="tab">地图</a>
<!-- map -->
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=GaqiVXmYjIDWOzLzZLI2pHtC"></script>
<script src="public/js/jquery-1.9.1.min.js"></script>
<div style="width:100%;height:430px;margin-left:auto;margin-right:auto;">
<ul class="mapbtn sub_nav">
<li rel="1" id="around_bus">公交</li>
<li rel="2">地铁</li>
<li rel="3">教育设施</li>
<li rel="4">医院</li>
<li rel="5">银行</li>
<li rel="6">休闲娱乐</li>
<li rel="7">购物</li>
<li rel="8">餐饮</li>
<li rel="9">运动健身</li>
</ul>
<div>
<div id="allmap" class="col-md-9 col-sm-12 col-xs-12" style="border-right:2px solid #bcbcbc;height:430px;"></div>
<div id="r-result" class="col-md-3 col-sm-12 col-xs-12" style="height:430px;overflow-y:auto;"></div>
</div>
</div>
<script type="text/javascript">
ilo="116.311165";
iloa="39.948399";
itxt="北京大学西校区";
mapshown=0;
$(function(){
$(".mapbtn li").click(function(){
inimap(ilo,iloa,$(this).attr("rel"),itxt);
$(".mapbtn li").removeClass("on");
$(this).addClass("on");
})
//这里有个bootstrap的tab,当触发这个tab时加载这个地图显示这个tab时触发这个事件
$("#around").on('shown.bs.tab', function (e) {
if(mapshown==0)
{
inimap(ilo,iloa,1,itxt);
$("#around_bus").addClass("on");
mapshown = 1;
}
})
})
</script>
<script type="text/javascript" charset="utf-8" src="public/js/map.js"></script>
map.js
// JavaScript Document
var ilo;
var iloa;
var itxt;
//116.3333333,39.38888888
function inimap(lo,loa,i,txt)
{
ilo=lo;
iloa=loa;
itxt=txt;
// 百度地图API功能
var mp = new BMap.Map("allmap");
mp.centerAndZoom(new BMap.Point(lo,loa), 15);
mp.enableScrollWheelZoom();
mp.addControl(new BMap.NavigationControl());
// 复杂的自定义覆盖物
function ComplexCustomOverlay(point, text){
this._point = point;
this._text = text;
}
ComplexCustomOverlay.prototype = new BMap.Overlay();
ComplexCustomOverlay.prototype.initialize = function(map){
this._map = map;
var div = this._div = document.createElement("div");
div.style.position = "absolute";
div.style.zIndex = BMap.Overlay.getZIndex(this._point.lat);
div.style.color = "white";
div.style.background = "url(img/2.png) no-repeat";
div.style.height = "50px";
div.style.padding = "2px";
div.style.width = "130px";
div.style.lineHeight = "28px";
div.style.whiteSpace = "nowrap";
div.style.MozUserSelect = "none";
div.style.fontSize = "12px"
div.style.top = "25px";
div.style.left = "0px";
div.style.overflow = "hidden";
var span = this._span = document.createElement("span");
span.style.display="block";
span.style.width="130px";
span.style.textAlign="center";
div.appendChild(span);
span.appendChild(document.createTextNode(this._text));
var that = this;
var arrow = this._arrow = document.createElement("div");
arrow.style.left = "0px";
mp.getPanes().labelPane.appendChild(div);
return div;
}
ComplexCustomOverlay.prototype.draw = function(){
var map = this._map;
var pixel = map.pointToOverlayPixel(this._point);
this._div.style.left = pixel.x - 65 + "px";
this._div.style.top = pixel.y - 40 + "px";
}
var myCompOverlay = new ComplexCustomOverlay(new BMap.Point(lo,loa),txt);
mp.addOverlay(myCompOverlay);
var txt="";
switch(i)
{
case "1":
txt="公交";
break;
case "2":
txt="地铁";
break;
case "3":
txt="学校";
break;
case "4":
txt="医院";
break;
case "5":
txt="银行";
break;
case "6":
txt="娱乐";
break;
case "7":
txt="购物";
break;
case "8":
txt="餐饮";
break;
case "9":
txt="健身";
break;
default:
txt="公交";
break;
}
var local = new BMap.LocalSearch(mp, {
renderOptions:{map: mp, panel: "r-result"}
});
local.searchInBounds(txt, mp.getBounds());
mp.addEventListener("dragend",function(){
mp.clearOverlays();
local.searchInBounds(txt, mp.getBounds());
});
}