百度地图显示多个标注点
发布时间:2016-11-02, 15:35:45 分类:HTML | 编辑 off 网址 | 辅助
图集1/1
正文 11344字数 619,382阅读
效果图: 在线演示<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>百度地图API显示多个标注点带提示的代码</title>
<!--css-->
<link href="style/demo.css" rel="stylesheet" type="text/css" />
<!--javascript-->
<script src="scripts/jquery-1.9.1.js" type="text/javascript"></script>
<script src="scripts/demo.js" type="text/javascript"></script>
</head>
<body>
<div class="demo_main">
<fieldset class="demo_title">
百度地图API显示多个标注点带提示的代码
</fieldset>
<fieldset class="demo_content">
<div style="min-height: 300px; width: 100%;" id="map">
</div>
<script type="text/javascript">
var markerArr = [
{ title: "名称:广州火车站", point: "113.264531,23.157003", address: "广东省广州市广州火车站", tel: "12306" },
{ title: "名称:广州塔(赤岗塔)", point: "113.330934,23.113401", address: "广东省广州市广州塔(赤岗塔) ", tel: "18500000000" },
{ title: "名称:广州动物园", point: "113.312213,23.147267", address: "广东省广州市广州动物园", tel: "18500000000" },
{ title: "名称:天河公园", point: "113.372867,23.134274", address: "广东省广州市天河公园", tel: "18500000000" }
];
function map_init() {
var map = new BMap.Map("map"); // 创建Map实例
var point = new BMap.Point(113.312213, 23.147267); //地图中心点,广州市
map.centerAndZoom(point, 13); // 初始化地图,设置中心点坐标和地图级别。
map.enableScrollWheelZoom(true); //启用滚轮放大缩小
//向地图中添加缩放控件
var ctrlNav = new window.BMap.NavigationControl({
anchor: BMAP_ANCHOR_TOP_LEFT,
type: BMAP_NAVIGATION_CONTROL_LARGE
});
map.addControl(ctrlNav);
//向地图中添加缩略图控件
var ctrlOve = new window.BMap.OverviewMapControl({
anchor: BMAP_ANCHOR_BOTTOM_RIGHT,
isOpen: 1
});
map.addControl(ctrlOve);
//向地图中添加比例尺控件
var ctrlSca = new window.BMap.ScaleControl({
anchor: BMAP_ANCHOR_BOTTOM_LEFT
});
map.addControl(ctrlSca);
var point = new Array(); //存放标注点经纬信息的数组
var marker = new Array(); //存放标注点对象的数组
var info = new Array(); //存放提示信息窗口对象的数组
for (var i = 0; i < markerArr.length; i++) {
var p0 = markerArr[i].point.split(",")[0]; //
var p1 = markerArr[i].point.split(",")[1]; //按照原数组的point格式将地图点坐标的经纬度分别提出来
point[i] = new window.BMap.Point(p0, p1); //循环生成新的地图点
marker[i] = new window.BMap.Marker(point[i]); //按照地图点坐标生成标记
map.addOverlay(marker[i]);
marker[i].setAnimation(BMAP_ANIMATION_BOUNCE); //跳动的动画
var label = new window.BMap.Label(markerArr[i].title, { offset: new window.BMap.Size(20, -10) });
marker[i].setLabel(label);
info[i] = new window.BMap.InfoWindow("<p style=’font-size:12px;lineheight:1.8em;’>" + markerArr[i].title + "</br>地址:" + markerArr[i].address + "</br> 电话:" + markerArr[i].tel + "</br></p>"); // 创建信息窗口对象
}
marker[0].addEventListener("mouseover", function () {
this.openInfoWindow(info[0]);
});
marker[1].addEventListener("mouseover", function () {
this.openInfoWindow(info[1]);
});
marker[2].addEventListener("mouseover", function () {
this.openInfoWindow(info[2]);
});
}
//异步调用百度js
function map_load() {
var load = document.createElement("script");
load.src = "http://api.map.baidu.com/api?v=1.4&callback=map_init";
document.body.appendChild(load);
}
window.onload = map_load;
</script>
</fieldset>
</div>
</body>
</html>
Run code
Cut to clipboard
完整demo下载文件后缀.rar
补充:动态添加标记提示:(将以下代码单独保存为html文件,打开即可预览效果)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>百度地图API显示多个标注点带提示的代码</title>
<!--css-->
<style type="text/css">
body { margin: 0; font-family: "Helvetica,Arial,FreeSans"; color: #000000; font-size: 12px; }
.demo_main { padding: 20px; padding-top: 10px; }
.demo_title { padding: 10px; margin-bottom: 10px; background-color: #D3D8E0; border: solid 1px gray; }
.demo_content { padding: 10px; margin-bottom: 10px; border: solid 1px gray; }
fieldset { border: 1px solid gray; }
</style>
<!--javascript-->
<script src="http://www.w3school.com.cn/jquery/jquery.js" type="text/javascript"></script>
</head>
<body>
<div class="demo_main">
<fieldset class="demo_title">
百度地图API显示多个标注点带提示的代码
</fieldset>
<fieldset class="demo_content">
<div style="min-height: 300px; width: 100%;" id="map">
</div>
<script type="text/javascript">
var markerArr = [
{ title: "名称:广州火车站", point: "113.264531,23.157003", address: "广东省广州市广州火车站", tel: "12306" },
{ title: "名称:广州塔(赤岗塔)", point: "113.330934,23.113401", address: "广东省广州市广州塔(赤岗塔) ", tel: "18500000000" },
{ title: "名称:广州动物园", point: "113.312213,23.147267", address: "广东省广州市广州动物园", tel: "18500000000" },
{ title: "名称:天河公园", point: "113.372867,23.134274", address: "广东省广州市天河公园", tel: "18500000000" }
];
var map; //Map实例
function map_init() {
map = new BMap.Map("map");
//第1步:设置地图中心点,广州市
var point = new BMap.Point(113.312213, 23.147267);
//第2步:初始化地图,设置中心点坐标和地图级别。
map.centerAndZoom(point, 13);
//第3步:启用滚轮放大缩小
map.enableScrollWheelZoom(true);
//第4步:向地图中添加缩放控件
var ctrlNav = new window.BMap.NavigationControl({
anchor: BMAP_ANCHOR_TOP_LEFT,
type: BMAP_NAVIGATION_CONTROL_LARGE
});
map.addControl(ctrlNav);
//第5步:向地图中添加缩略图控件
var ctrlOve = new window.BMap.OverviewMapControl({
anchor: BMAP_ANCHOR_BOTTOM_RIGHT,
isOpen: 1
});
map.addControl(ctrlOve);
//第6步:向地图中添加比例尺控件
var ctrlSca = new window.BMap.ScaleControl({
anchor: BMAP_ANCHOR_BOTTOM_LEFT
});
map.addControl(ctrlSca);
//第7步:绘制点
for (var i = 0; i < markerArr.length; i++) {
var p0 = markerArr[i].point.split(",")[0];
var p1 = markerArr[i].point.split(",")[1];
var maker = addMarker(new window.BMap.Point(p0, p1), i);
addInfoWindow(maker, markerArr[i], i);
}
}
// 添加标注
function addMarker(point, index) {
var myIcon = new BMap.Icon("http://api.map.baidu.com/img/markers.png",
new BMap.Size(23, 25), {
offset: new BMap.Size(10, 25),
imageOffset: new BMap.Size(0, 0 - index * 25)
});
var marker = new BMap.Marker(point, { icon: myIcon });
map.addOverlay(marker);
return marker;
}
// 添加信息窗口
function addInfoWindow(marker, poi) {
//pop弹窗标题
var title = '<div style="font-weight:bold;color:#CE5521;font-size:14px">' + poi.title + '</div>';
//pop弹窗信息
var html = [];
html.push('<table cellspacing="0" style="table-layout:fixed;width:100%;font:12px arial,simsun,sans-serif"><tbody>');
html.push('<tr>');
html.push('<td style="vertical-align:top;line-height:16px;width:38px;white-space:nowrap;word-break:keep-all">地址:</td>');
html.push('<td style="vertical-align:top;line-height:16px">' + poi.address + ' </td>');
html.push('</tr>');
html.push('</tbody></table>');
var infoWindow = new BMap.InfoWindow(html.join(""), { title: title, width: 200 });
var openInfoWinFun = function () {
marker.openInfoWindow(infoWindow);
};
marker.addEventListener("click", openInfoWinFun);
return openInfoWinFun;
}
//异步调用百度js
function map_load() {
var load = document.createElement("script");
load.src = "http://api.map.baidu.com/api?v=1.4&callback=map_init";
document.body.appendChild(load);
}
window.onload = map_load;
</script>
</fieldset>
</div>
</body>
</html>
Run code
Cut to clipboard
(支付宝)给作者钱财以资鼓励 (微信)→
有过 9 条评论 »
var point = new Array(); var marker = new Array(); var info = new Array();
太感谢楼主了
<GZ:list sql="select * from gz_mendianbiaozhu where status='1' order by listorder desc" key='i'> <?php $meidanfenbu[]=$r; ?> </GZ:list> <!---------------------------------------- 栏目 start ----------------------------------------> <div class="lanmu"> <ul class="xuanxiang xuanxiangnew-lij clearfix"><include file="A:l"/> </ul> </div> <!---------------------------------------- 栏目 end ----------------------------------------> <?php $zms=array( '1'=>'A', '2'=>'B', '3'=>'C', '4'=>'D', '5'=>'E', '6'=>'F', '7'=>'G', '8'=>'H', '9'=>'I', '10'=>'J', '11'=>'K', '12'=>'L', '13'=>'M', '14'=>'N', '15'=>'O', '16'=>'P', '17'=>'Q', '18'=>'R', '19'=>'S', '20'=>'T', '21'=>'U', '22'=>'V', '23'=>'W', '24'=>'X', '25'=>'Y', '26'=>'Z' ); ?> <!---------------------------------------- 门店分布内容 start ----------------------------------------> <div class="mdfbbox"> <div class="fbbt">广西南宁市范围广羽人门店分布地图:</div> <div class="gxditu" id="map" style="width:900px; height:365px; border:1px solid #ccc;"></div> <div class="fbbt" style="margin-top:30px;">广西南宁市广羽人所有店铺地址:</div> <div class="fbdzlf" style="width:900px; border-right: none;"><?php foreach($meidanfenbu as $i=>$r){ $ik++; if($nnssvs) $nnssvs.= ',{ title: "'.$r['mingc'].'", point: "'.$r['zuobo'].'", address: "'.$r['dizhi'].'",tel:"'.$r['tel'].'"}'; else $nnssvs= '{ title: "名称:'.$r['mingc'].'", point: "'.$r['zuobo'].'", address: "'.$r['dizhi'].'",tel:"'.$r['tel'].'"}'; ?> <div style="float:left;<?php if(($i%2)) echo 'width:425px;margin-left: 25px;'; else echo 'width:448px; border-right: 1px dashed #ccc;'; //if($i>2) echo 'margin-top: 15px;'; ?>padding-bottom:15px;"> <div style="width:100%;" class="dianming"><span style="color:red;"><?php echo $zms[$ik];?></span> {$r.mingc}</div> <P style="width:100%;" class="diandizhi" style="margin-bottom:15px;">{$r.dizhi}</P></div> <?php } ?> </div> </div> <!---------------------------------------- 门店分布内容 end ----------------------------------------> <script> var markerArr = [ <?php echo $nnssvs;?> //{ title: "名称:金外滩商务大厦", point: "108.33058,22.815521", address: "金外滩商务大厦1301"}, //{ title: "名称:人民公园", point: "108.336858,22.83404", address: "人民公园地址<br>电话13607875450 "} ]; var map; //Map实例 function map_init() { map = new BMap.Map("map"); //第1步:设置地图中心点,南宁市政府 var point = new BMap.Point(108.33058,22.815521); //第2步:初始化地图,设置中心点坐标和地图级别。 map.centerAndZoom(point, 13); //第3步:启用滚轮放大缩小 map.enableScrollWheelZoom(true); //第4步:向地图中添加缩放控件 var ctrlNav = new window.BMap.NavigationControl({ anchor: BMAP_ANCHOR_TOP_LEFT, type: BMAP_NAVIGATION_CONTROL_LARGE }); map.addControl(ctrlNav); //第5步:向地图中添加缩略图控件 var ctrlOve = new window.BMap.OverviewMapControl({ anchor: BMAP_ANCHOR_BOTTOM_RIGHT, isOpen: 1 }); map.addControl(ctrlOve); //第6步:向地图中添加比例尺控件 var ctrlSca = new window.BMap.ScaleControl({ anchor: BMAP_ANCHOR_BOTTOM_LEFT }); map.addControl(ctrlSca); //第7步:绘制点 for (var i = 0; i < markerArr.length; i++) { var p0 = markerArr[i].point.split(",")[0]; var p1 = markerArr[i].point.split(",")[1]; var maker = addMarker(new window.BMap.Point(p0, p1), i); addInfoWindow(maker, markerArr[i], i); } } // 添加标注 function addMarker(point, index) { var myIcon = new BMap.Icon("http://api.map.baidu.com/img/markers.png", new BMap.Size(23, 25), { offset: new BMap.Size(10, 25), imageOffset: new BMap.Size(0, 0 - index * 25) }); var marker = new BMap.Marker(point, { icon: myIcon }); map.addOverlay(marker); return marker; } // 添加信息窗口 function addInfoWindow(marker, poi) { //pop弹窗标题 var title = '<div style="font-weight:bold;color:#CE5521;font-size:14px">' + poi.title + '</div>'; //pop弹窗信息 var html = []; html.push('<table cellspacing="0" style="table-layout:fixed;width:100%;font:12px arial,simsun,sans-serif"><tbody>'); html.push('<tr>'); html.push('<td style="vertical-align:top;line-height:16px;width:38px;white-space:nowrap;word-break:keep-all">地址:</td>'); html.push('<td style="vertical-align:top;line-height:16px">' + poi.address + ' </td>'); html.push('</tr><tr><td style="vertical-align:top;line-height:16px;width:38px;white-space:nowrap;word-break:keep-all">电话:</td>'); html.push('<td style="vertical-align:top;line-height:16px">' + poi.tel + ' </td>'); html.push('</tr>'); html.push('</tbody></table>'); var infoWindow = new BMap.InfoWindow(html.join(""), { title: title, width: 200 }); var openInfoWinFun = function () { marker.openInfoWindow(infoWindow); }; marker.addEventListener("click", openInfoWinFun); return openInfoWinFun; } //异步调用百度js function map_load() { var load = document.createElement("script"); load.src = "http://api.map.baidu.com/api?v=1.4&callback=map_init"; document.body.appendChild(load); } window.onload = map_load; //map.panTo(new BMap.Point(116.409, 39.918)); </script>
百度地图在地图中给标注点marker添加后click事件后 marker.addEventListener("click", function(){}) 如何在其他地方自动触发这个marker点击事件? 因为输出marker是一个对象,所以并不能marker.click() 想做的就是如百度地图那样点击左边搜索结果栏右边标注点自动点击一次
感觉api确实不太好用,想出来俩解决方案。
1.可以定义好事件处理函数,想要触发时执行一遍:
marker.addEventListener('click',func); function func(){ alert(); } // 想要触发时,直接调用func func();
2.发现marker有一个属性B指向标记DOM,但B只在地图加载完成后才有值,否则为null,所以可以在地图加载完成后给给B绑定事件.
map.addEventListener("tilesloaded",function(){ marker.B.addEventListener('click',function(){ alert(); }); /* 使用zepto或jQuery $(marker.B).on('click',function(){ alert(); }); */ }); // 注意触发时要保证地图加载完成 marker.B.click(); /* 或 $(marker.B).trigger('click'); */
也可以不等地图加载完,定义marker后就直接绑定,但触发时还是触发marker.B也是可以的。
marker.addEventListener('click',function(){ alert(); }); // 注意触发时要保证地图加载完成 marker.B.click();
新增点击移动到标注点打开标注点信息窗口
<GZ:list sql="select * from gz_mendianbiaozhu where status='1' order by listorder desc" key='i'> <?php $meidanfenbu[]=$r; ?> </GZ:list> <!---------------------------------------- 栏目 start ----------------------------------------> <div class="lanmu"> <ul class="xuanxiang xuanxiangnew-lij clearfix"><include file="A:l"/> </ul> </div> <!---------------------------------------- 栏目 end ----------------------------------------> <?php $zms=array( '1'=>'A', '2'=>'B', '3'=>'C', '4'=>'D', '5'=>'E', '6'=>'F', '7'=>'G', '8'=>'H', '9'=>'I', '10'=>'J', '11'=>'K', '12'=>'L', '13'=>'M', '14'=>'N', '15'=>'O', '16'=>'P', '17'=>'Q', '18'=>'R', '19'=>'S', '20'=>'T', '21'=>'U', '22'=>'V', '23'=>'W', '24'=>'X', '25'=>'Y', '26'=>'Z' ); ?> <!---------------------------------------- 门店分布内容 start ----------------------------------------> <div class="mdfbbox"> <div class="fbbt">广西南宁市范围广羽人门店分布地图:</div> <div class="gxditu" id="map" style="width:900px; height:365px; border:1px solid #ccc;"></div> <div class="fbbt" style="margin-top:30px;">广西南宁市广羽人所有店铺地址:</div> <div class="fbdzlf" style="width:900px; border-right: none;"><?php foreach($meidanfenbu as $i=>$r){ $ik++; if($nnssvs) $nnssvs.= ',{ title: "'.$r['mingc'].'", point: "'.$r['zuobo'].'", address: "'.$r['dizhi'].'",tel:"'.$r['tel'].'"}'; else $nnssvs= '{ title: "名称:'.$r['mingc'].'", point: "'.$r['zuobo'].'", address: "'.$r['dizhi'].'",tel:"'.$r['tel'].'"}'; $lns=explode(',',$r['zuobo']); $ln=$lns['0']; $la=$lns['1']; ?> <div onclick="getdddsnew('{$ln}','{$la}','{$r.mingc}','{$r.dizhi}','{$r.tel}');" style="cursor: pointer;float:left;<?php if(($i%2)) echo 'width:425px;margin-left: 25px;'; else echo 'width:448px; border-right: 1px dashed #ccc;'; //if($i>2) echo 'margin-top: 15px;'; ?>padding-bottom:15px;"> <div style="width:100%;" class="dianming"><span style="color:red;"><?php echo $zms[$ik];?></span> {$r.mingc}</div> <P style="width:100%;" class="diandizhi" style="margin-bottom:15px;">{$r.dizhi}</P></div> <?php } ?> </div> </div> <!---------------------------------------- 门店分布内容 end ----------------------------------------> <script> var load = document.createElement("script"); load.src = "http://api.map.baidu.com/api?v=1.4&callback=map_init"; document.body.appendChild(load); var markerArr = [ <?php echo $nnssvs;?> //{ title: "名称:金外滩商务大厦", point: "108.33058,22.815521", address: "金外滩商务大厦1301"}, //{ title: "名称:人民公园", point: "108.336858,22.83404", address: "人民公园地址<br>电话13607875450 "} ]; //var map; //Map实例 //map = new BMap.Map("map"); function map_init() { map = new BMap.Map("map"); //第1步:设置地图中心点,南宁市政府 var point = new BMap.Point(108.33058,22.815521); //第2步:初始化地图,设置中心点坐标和地图级别。 map.centerAndZoom(point, 13); //第3步:启用滚轮放大缩小 map.enableScrollWheelZoom(true); //第4步:向地图中添加缩放控件 var ctrlNav = new window.BMap.NavigationControl({ anchor: BMAP_ANCHOR_TOP_LEFT, type: BMAP_NAVIGATION_CONTROL_LARGE }); map.addControl(ctrlNav); //第5步:向地图中添加缩略图控件 var ctrlOve = new window.BMap.OverviewMapControl({ anchor: BMAP_ANCHOR_BOTTOM_RIGHT, isOpen: 1 }); map.addControl(ctrlOve); //第6步:向地图中添加比例尺控件 var ctrlSca = new window.BMap.ScaleControl({ anchor: BMAP_ANCHOR_BOTTOM_LEFT }); map.addControl(ctrlSca); //第7步:绘制点 for (var i = 0; i < markerArr.length; i++) { var p0 = markerArr[i].point.split(",")[0]; var p1 = markerArr[i].point.split(",")[1]; var maker = addMarker(new window.BMap.Point(p0, p1), i); // i 标注字母顺序 addInfoWindow(maker, markerArr[i], i); } } // 添加标注 function addMarker(point, index) { var myIcon = new BMap.Icon("http://api.map.baidu.com/img/markers.png", new BMap.Size(23, 25), { offset: new BMap.Size(10, 25), imageOffset: new BMap.Size(0, 0 - index * 25) }); var marker = new BMap.Marker(point, { icon: myIcon }); map.addOverlay(marker); return marker; } // 添加信息窗口 function addInfoWindow(marker, poi) { //pop弹窗标题 var title = '<div style="font-weight:bold;color:#CE5521;font-size:14px">' + poi.title + '</div>'; //pop弹窗信息 var html = []; html.push('<p style="vertical-align:top;line-height:16px">地址:'+poi.address+'</p><p style="vertical-align:top;line-height:16px">电话:'+poi.tel+'</p>'); /*html.push('<table cellspacing="0" style="table-layout:fixed;width:100%;font:12px arial,simsun,sans-serif"><tbody>'); html.push('<tr>'); html.push('<td style="vertical-align:top;line-height:16px;width:38px;white-space:nowrap;word-break:keep-all">地址:</td>'); html.push('<td style="vertical-align:top;line-height:16px">' + poi.address + ' </td>'); html.push('</tr><tr><td style="vertical-align:top;line-height:16px;width:38px;white-space:nowrap;word-break:keep-all">电话:</td>'); html.push('<td style="vertical-align:top;line-height:16px">' + poi.tel + ' </td>'); html.push('</tr>'); html.push('</tbody></table>'); */ var infoWindow = new BMap.InfoWindow(html.join(""), { title: title/*, width: 200*/ }); var openInfoWinFun = function () { marker.openInfoWindow(infoWindow); }; marker.addEventListener("click", openInfoWinFun); return openInfoWinFun; } //异步调用百度js /*function map_load() { var load = document.createElement("script"); load.src = "http://api.map.baidu.com/api?v=1.4&callback=map_init"; document.body.appendChild(load); } window.onload = map_load; */ //点击打开标注点移动到标注点地图中心 function getdddsnew(ln,la,title,address,tel){ //pop弹窗标题 var title = '<div style="font-weight:bold;color:#CE5521;font-size:14px">' + title + '</div>'; //pop弹窗信息 /*var html = []; html.push('<table cellspacing="0" style="table-layout:fixed;width:100%;font:12px arial,simsun,sans-serif"><tbody>'); html.push('<tr>'); html.push('<td style="vertical-align:top;line-height:16px;width:38px;white-space:nowrap;word-break:keep-all">地址:</td>'); html.push('<td style="vertical-align:top;line-height:16px">' + address + ' </td>'); html.push('</tr><tr><td style="vertical-align:top;line-height:16px;width:38px;white-space:nowrap;word-break:keep-all">电话:</td>'); html.push('<td style="vertical-align:top;line-height:16px">' + tel + ' </td>'); html.push('</tr>'); html.push('</tbody></table>');*/ html='<p style="vertical-align:top;line-height:16px">地址:'+address+'</p><p style="vertical-align:top;line-height:16px">电话:'+tel+'</p>'; //alert(lnat); //map.panTo(new BMap.Point(116.409, 39.918));平滑移动至新中心点 如果移动距离超过了当前地图区域大小,则地图会直跳到该点。 var Point=new BMap.Point(ln,la); var opts = { //width : 250, // 信息窗口宽度 //height: 100, // 信息窗口高度 title : title // 信息窗口标题 } var infoWindow = new BMap.InfoWindow(html, opts); // 创建信息窗口对象 //map.openInfoWindow(infoWindow, map.getCenter()); // 打开信息窗口 map.openInfoWindow(infoWindow, Point); } //map.panTo(new BMap.Point(116.409, 39.918)); </script>
添加设置覆盖物标注点文字标签
<GZ:list sql="select * from gz_mendianbiaozhu where status='1' order by listorder desc" key='i'> <?php $meidanfenbu[]=$r; ?> </GZ:list> <!---------------------------------------- 栏目 start ----------------------------------------> <div class="lanmu"> <ul class="xuanxiang xuanxiangnew-lij clearfix"><include file="A:l"/> </ul> </div> <!---------------------------------------- 栏目 end ----------------------------------------> <?php $zms=array( '1'=>'A', '2'=>'B', '3'=>'C', '4'=>'D', '5'=>'E', '6'=>'F', '7'=>'G', '8'=>'H', '9'=>'I', '10'=>'J', '11'=>'K', '12'=>'L', '13'=>'M', '14'=>'N', '15'=>'O', '16'=>'P', '17'=>'Q', '18'=>'R', '19'=>'S', '20'=>'T', '21'=>'U', '22'=>'V', '23'=>'W', '24'=>'X', '25'=>'Y', '26'=>'Z' ); ?> <!---------------------------------------- 门店分布内容 start ----------------------------------------> <div class="mdfbbox"> <div class="fbbt">广西南宁市范围广羽人门店分布地图:</div> <div class="gxditu" id="map" style="width:900px; height:365px; border:1px solid #ccc;"></div> <div class="fbbt" style="margin-top:30px;">广西南宁市广羽人所有店铺地址:</div> <div class="fbdzlf" style="width:900px; border-right: none;"><?php foreach($meidanfenbu as $i=>$r){ $ik++; if($nnssvs) $nnssvs.= ',{ title: "'.$r['mingc'].'", point: "'.$r['zuobo'].'", address: "'.$r['dizhi'].'",tel:"'.$r['tel'].'"}'; else $nnssvs= '{ title: "名称:'.$r['mingc'].'", point: "'.$r['zuobo'].'", address: "'.$r['dizhi'].'",tel:"'.$r['tel'].'"}'; $lns=explode(',',$r['zuobo']); $ln=$lns['0']; $la=$lns['1']; ?> <div onclick="getdddsnew('{$ln}','{$la}','{$r.mingc}','{$r.dizhi}','{$r.tel}');" style="cursor: pointer;float:left;<?php if(($i%2)) echo 'width:425px;margin-left: 25px;'; else echo 'width:448px; border-right: 1px dashed #ccc;'; //if($i>2) echo 'margin-top: 15px;'; ?>padding-bottom:15px;"> <div style="width:100%;" class="dianming"><span style="color:red;"><?php echo $zms[$ik];?></span> {$r.mingc}</div> <P style="width:100%;" class="diandizhi" style="margin-bottom:15px;">{$r.dizhi}</P></div> <?php } ?> </div> </div> <!---------------------------------------- 门店分布内容 end ----------------------------------------> <script> var load = document.createElement("script"); load.src = "http://api.map.baidu.com/api?v=1.4&callback=map_init"; document.body.appendChild(load); var markerArr = [ <?php echo $nnssvs;?> //{ title: "名称:金外滩商务大厦", point: "108.33058,22.815521", address: "金外滩商务大厦1301"}, //{ title: "名称:人民公园", point: "108.336858,22.83404", address: "人民公园地址<br>电话13607875450 "} ]; //var map; //Map实例 //map = new BMap.Map("map"); function map_init() { map = new BMap.Map("map"); //第1步:设置地图中心点,南宁市政府 var point = new BMap.Point(108.33058,22.815521); //第2步:初始化地图,设置中心点坐标和地图级别。 map.centerAndZoom(point, 13); //第3步:启用滚轮放大缩小 map.enableScrollWheelZoom(true); //第4步:向地图中添加缩放控件 var ctrlNav = new window.BMap.NavigationControl({ anchor: BMAP_ANCHOR_TOP_LEFT, type: BMAP_NAVIGATION_CONTROL_LARGE }); map.addControl(ctrlNav); //第5步:向地图中添加缩略图控件 var ctrlOve = new window.BMap.OverviewMapControl({ anchor: BMAP_ANCHOR_BOTTOM_RIGHT, isOpen: 1 }); map.addControl(ctrlOve); //第6步:向地图中添加比例尺控件 var ctrlSca = new window.BMap.ScaleControl({ anchor: BMAP_ANCHOR_BOTTOM_LEFT }); map.addControl(ctrlSca); //第7步:绘制点 for (var i = 0; i < markerArr.length; i++) { var p0 = markerArr[i].point.split(",")[0]; var p1 = markerArr[i].point.split(",")[1]; var maker = addMarker(new window.BMap.Point(p0, p1), i); // i 标注字母顺序 addInfoWindow(maker, markerArr[i], i); } } // 添加标注 function addMarker(point, index) { var myIcon = new BMap.Icon("http://api.map.baidu.com/img/markers.png", new BMap.Size(23, 25), { offset: new BMap.Size(10, 25), imageOffset: new BMap.Size(0, 0 - index * 25) }); var marker = new BMap.Marker(point, { icon: myIcon }); map.addOverlay(marker); //设置覆盖物的文字标签 var label = new BMap.Label(markerArr[index].title,{offset:new BMap.Size(20,-10)}); marker.setLabel(label); //end return marker; } // 添加信息窗口 function addInfoWindow(marker, poi) { //pop弹窗标题 var title = '<div style="font-weight:bold;color:#CE5521;font-size:14px">' + poi.title + '</div>'; //pop弹窗信息 var html = []; html.push('<p style="vertical-align:top;line-height:16px">地址:'+poi.address+'</p><p style="vertical-align:top;line-height:16px">电话:'+poi.tel+'</p>'); /*html.push('<table cellspacing="0" style="table-layout:fixed;width:100%;font:12px arial,simsun,sans-serif"><tbody>'); html.push('<tr>'); html.push('<td style="vertical-align:top;line-height:16px;width:38px;white-space:nowrap;word-break:keep-all">地址:</td>'); html.push('<td style="vertical-align:top;line-height:16px">' + poi.address + ' </td>'); html.push('</tr><tr><td style="vertical-align:top;line-height:16px;width:38px;white-space:nowrap;word-break:keep-all">电话:</td>'); html.push('<td style="vertical-align:top;line-height:16px">' + poi.tel + ' </td>'); html.push('</tr>'); html.push('</tbody></table>'); */ var infoWindow = new BMap.InfoWindow(html.join(""), { title: title/*, width: 200*/ }); var openInfoWinFun = function () { marker.openInfoWindow(infoWindow); }; marker.addEventListener("click", openInfoWinFun); return openInfoWinFun; } //异步调用百度js /*function map_load() { var load = document.createElement("script"); load.src = "http://api.map.baidu.com/api?v=1.4&callback=map_init"; document.body.appendChild(load); } window.onload = map_load; */ //点击打开标注点移动到标注点地图中心 function getdddsnew(ln,la,title,address,tel){ //pop弹窗标题 var title = '<div style="font-weight:bold;color:#CE5521;font-size:14px">' + title + '</div>'; //pop弹窗信息 /*var html = []; html.push('<table cellspacing="0" style="table-layout:fixed;width:100%;font:12px arial,simsun,sans-serif"><tbody>'); html.push('<tr>'); html.push('<td style="vertical-align:top;line-height:16px;width:38px;white-space:nowrap;word-break:keep-all">地址:</td>'); html.push('<td style="vertical-align:top;line-height:16px">' + address + ' </td>'); html.push('</tr><tr><td style="vertical-align:top;line-height:16px;width:38px;white-space:nowrap;word-break:keep-all">电话:</td>'); html.push('<td style="vertical-align:top;line-height:16px">' + tel + ' </td>'); html.push('</tr>'); html.push('</tbody></table>');*/ html='<p style="vertical-align:top;line-height:16px">地址:'+address+'</p><p style="vertical-align:top;line-height:16px">电话:'+tel+'</p>'; //alert(lnat); //map.panTo(new BMap.Point(116.409, 39.918));平滑移动至新中心点 如果移动距离超过了当前地图区域大小,则地图会直跳到该点。 var Point=new BMap.Point(ln,la); var opts = { //width : 250, // 信息窗口宽度 //height: 100, // 信息窗口高度 title : title // 信息窗口标题 } var infoWindow = new BMap.InfoWindow(html, opts); // 创建信息窗口对象 //map.openInfoWindow(infoWindow, map.getCenter()); // 打开信息窗口 map.openInfoWindow(infoWindow, Point); } //map.panTo(new BMap.Point(116.409, 39.918)); </script>
百度地图API示例 百度地图API JavaScript API > 开发指南
<div class="ditu" id="map" style="width:900px; height:396px; border:1px solid #ccc; margin:15px auto 0 auto;"></div> <script src="http://api.map.baidu.com/api?v=1.3" type="text/javascript"></script> <script type="text/javascript"> //创建和初始化地图函数: function initMap(){ createMap();//创建地图 setMapEvent();//设置地图事件 addMapControl();//向地图添加控件 addMapOverlay();//向地图添加覆盖物 } function createMap(){ map = new BMap.Map("map"); map.centerAndZoom(new BMap.Point(<?php echo $longitude;?>,<?php echo $latitude;?>),19); } function setMapEvent(){ map.enableScrollWheelZoom(); map.enableKeyboard(); map.enableDragging(); map.enableDoubleClickZoom() } function addClickHandler(target,window){ target.addEventListener("click",function(){ target.openInfoWindow(window); }); } function addMapOverlay(){ var markers = [ {content:"<?php echo $address;?>",title:"<?php echo $company;?>",imageOffset: {width:-46,height:-21 },position:{lat:<?php echo $latitude;?>,lng:<?php echo $longitude;?>}} ]; for(var index = 0; index < markers.length; index++ ){ var point = new BMap.Point(markers[index].position.lng,markers[index].position.lat); var marker = new BMap.Marker(point,{icon:new BMap.Icon("http://api.map.baidu.com/lbsapi/createmap/images/icon.png",new BMap.Size(20,25),{ imageOffset: new BMap.Size(markers[index].imageOffset.width,markers[index].imageOffset.height) })}); var label = new BMap.Label(markers[index].title,{offset: new BMap.Size(25,5)}); var opts = { width: 200, title: markers[index].title, enableMessage: false }; var infoWindow = new BMap.InfoWindow(markers[index].content,opts); marker.setLabel(label); addClickHandler(marker,infoWindow); map.addOverlay(marker); }; } //向地图添加控件 function addMapControl(){ var scaleControl = new BMap.ScaleControl({anchor:BMAP_ANCHOR_BOTTOM_LEFT}); scaleControl.setUnit(BMAP_UNIT_IMPERIAL); map.addControl(scaleControl); var navControl = new BMap.NavigationControl({anchor:BMAP_ANCHOR_TOP_LEFT,type:BMAP_NAVIGATION_CONTROL_LARGE}); map.addControl(navControl); var overviewControl = new BMap.OverviewMapControl({anchor:BMAP_ANCHOR_BOTTOM_RIGHT,isOpen:false}); map.addControl(overviewControl); } var map; initMap(); </script>
<script type="text/javascript" src="http://api.map.baidu.com/api?type=quick&ak=X8u8xx9GzO88EIydfLbTsvbK&v=1.0"></script> <!---------------------------------- 地图开始 ----------------------------------> <div class="lxfsditu" id="map" style="border:1px solid #ccc; width:15rem; height:11.85rem;"> </div> <!---------------------------------- 地图结束 ----------------------------------> <script type="text/javascript"> // 百度地图API功能 var map = new BMap.Map("map"); map.centerAndZoom(new BMap.Point(108.312475,22.772913), 14); map.addControl(new BMap.ZoomControl()); //添加地图缩放控件 var marker1 = new BMap.Marker(new BMap.Point(108.312475,22.772913)); //创建标注 map.addOverlay(marker1); // 将标注添加到地图中 //创建信息窗口 var infoWindow1 = new BMap.InfoWindow("广西天材医疗器械有限公司<br>南宁市金凯路11号荣港城二期12座16楼E号"); marker1.addEventListener("click", function(){this.openInfoWindow(infoWindow1);}); </script>
宏越钢结构地图
<script type="text/javascript" src="http://api.map.baidu.com/api?v=1.4"></script> <script type="text/javascript"> // 百度地图API功能 var map = new BMap.Map("map"); map.centerAndZoom(new BMap.Point(108.354387,22.79029),19); var marker1 = new BMap.Marker(new BMap.Point(108.354387,22.79029)); //创建标注 map.addOverlay(marker1); // 将标注添加到地图中 //创建信息窗口 var infoWindow1 = new BMap.InfoWindow("广西宏越钢结构工程有限公司<br>电话:0771-5387865<br>地址:广西南宁市青秀区柳沙路8号"); marker1.addEventListener("click", function(){this.openInfoWindow(infoWindow1);}); </script>
点击收藏js按钮
function addFavorite() { var url = window.location; var title = document.title; var ua = navigator.userAgent.toLowerCase(); if (ua.indexOf("360se") > -1) { alert("由于360浏览器功能限制,请按 Ctrl+D 手动收藏!"); } else if (ua.indexOf("msie 8") > -1) { window.external.AddToFavoritesBar(url, title); //IE8 } else if (document.all) { try{ window.external.addFavorite(url, title); }catch(e){ alert('对不起,由于您的浏览器功能限制,请使用菜单栏或按 Ctrl+D 手动收藏!'); } } else if (window.sidebar) { window.sidebar.addPanel(title, url, ""); } else { alert('对不起,由于您的浏览器功能限制,请使用菜单栏或按 Ctrl+D 手动收藏!'); } }
//创建信息窗口 var infoWindow1 = new BMap.InfoWindow("广西华都环境投资集团有限公司<p style='word-break:keep-all;white-space:nowrap;'>地址:南宁市青秀区东葛路118号南宁青秀万达广场东9栋2701室</p><p>电话:<?php echo $wen_tel;?></p>");
一般的文字截断(适用于内联与块):
.text-overflow{ display:block; /*内联对象需加*/ width:31em; word-break:keep-all; /* 不换行 */ white-space:nowrap; /* 不换行 */ overflow:hidden; /* 内容超出宽度时隐藏超出部分的内容 */ text-overflow:ellipsis; /* 当对象内文本溢出时显示省略标记(...) ;需与overflow:hidden;一起使用。*/ }
对于表格,定义有点不一样:
table{ width:30em; table-layout:fixed; /* 只有定义了表格的布局算法为fixed,下面td的定义才能起作用。 */ } td{ width:100%; word-break:keep-all; /* 不换行 */ white-space:nowrap; /* 不换行 */ overflow:hidden; /* 内容超出宽度时隐藏超出部分的内容 */ text-overflow:ellipsis; /* 当对象内文本溢出时显示省略标记(...) ;需与overflow:hidden;一起使用。*/ }
注:这个只对单行的文字的效,如果你想把它用在多行上,也只有第一行有作用的。 这个写法只有IE会有“...”,其它的浏览器文本超出指定宽度时会隐藏。
用到百度地图。功能要求将一批标记点加入地图,点击其中任意一个点,地图弹出InfoWindow框,里面显示与此点相关的内容。
按照常规写了如下代码:
var node = function(){ name; lng; lat; }; addmarks = function(nodes){ var _nodes = nodes; var _markers = new Array(); for(var i=0;i<_nodes.length;i++){ var _marker = new BMap.Marker(new BMap.Point(_nodes[i].lng, _nodes[i].lat)); var _node = _nodes[i]; var _html = "节点名:"+_node.name; _marker.addEventListener("click", function(e){ this.openInfoWindow(new BMap.InfoWindow(_html)); }); _marker.addEventListener("mouseover", function(e){ this.setTitle("坐标@ "+_node.lng+","+_node.lat); }); _markers.push(_marker); } myClusterer = new BMapLib.MarkerClusterer(myMap, {markers:_markers}); myClusterer.setMaxZoom(17); //myClusterer.setStyles(myStyles); };
上网查了一下,没有人给出具体解决,只是提出了javascript的闭包来解决。
于是采用闭包方式重新写了代码:
addmarks = function(nodes){ var _nodes = nodes; var _markers = new Array(); for(var i=0;i<_nodes.length;i++){ var _html = "节点名:"+_node.name; shop_markers.push(createMark(_nodes[i], _html)); } myClusterer = new BMapLib.MarkerClusterer(myMap, {markers:shop_markers}); myClusterer.setMaxZoom(17); //myClusterer.setStyles(myStyles); }; createMark = function(node, info_html){ var _marker = new BMap.Marker(new BMap.Point(node.lng, node.lat)); _marker.addEventListener("click", function(e){ this.openInfoWindow(new BMap.InfoWindow(info_html)); }); _marker.addEventListener("mouseover", function(e){ this.setTitle("位于: "+node.lng+","+node.lat); }); return _marker; };
marker = g.marker(new BMap.Point(data.ProductList[i].LongPoint, data.ProductList[i].LatPoint), { shadow: true }); map.addOverlay(marker); //添加图标 var initPoint = new BMap.Point(data.ProductList[i].LongPoint, data.ProductList[i].LatPoint); var infoWindow = new BMap.InfoWindow(infoHtml); // 创建信息窗口对象 marker.addEventListener("click", function() { map.setCenter(this.getPosition()); this.openInfoWindow(infoWindow, initPoint);
两行代码就搞定这个问题
_marker.provalue = _html; map.addOverlay(_marker ); _marker .addEventListener('click', function () { this.openInfoWindow(new BMap.InfoWindow(this.provalue)); });