先定位到自己的位子,然后判断数据库中的点是否在定位点的圆形区域内,在则显示出来,并为每个点增加点击显示信息
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>社保卡受理地点</title>
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no,minimal-ui">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="white">
<script language=javascript src="${pageContext.request.contextPath}/cc/scripts/jquery.min.js"></script>
<script language=javascript src="${pageContext.request.contextPath}/cc/services/socialcard/localdata.js"></script>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=H4W2bUuaeY2i37BRgx7BCZkp"></script>
<style type="text/css">
body, html {width: 100%;height: 100%;margin:0;font-family:"微软雅黑";}
#allmap{width:100%;height:500px;}
p{margin-left:5px; font-size:14px;}
</style>
</head>
<body>
<p style="font-size:16px; font-weight:600 ">社保卡受理地点查询</p>
如果开启定位绿色点为自己所在位子<br>
<div id="allmap">
</div>
</body>
<script type="text/javascript">
var map = new BMap.Map("allmap"); // 创建Map实例
map.centerAndZoom(new BMap.Point(121.487899,31.249162), 12);//上海市中心坐标
map.addControl(new BMap.NavigationControl()); //添加缩放控件
map.addControl(new BMap.ScaleControl()); //添加比例尺控件
map.addControl(new BMap.OverviewMapControl()); //添加缩略图控件
map.enableScrollWheelZoom(); // 启用滚轮放大缩小。
map.enableKeyboard(); // 启用键盘操作。
var opts = {
width : 200, // 信息窗口宽度
//height: 100, // 信息窗口高度
title : "社保卡地点信息" , // 信息窗口标题
enableMessage:true,//设置允许信息窗发送短息
message:"我现在有事需要联系你!"
};
var geolocation = new BMap.Geolocation();
// var pt = new BMap.Point(116.417, 39.909);
var myIcon = new BMap.Icon("${pageContext.request.contextPath}/cc/services/socialcard/images/marker_green.png", new BMap.Size(30,30));
geolocation.getCurrentPosition(function(r){
if(this.getStatus() == BMAP_STATUS_SUCCESS){
var mk = new BMap.Marker(r.point,{icon:myIcon});
map.addOverlay(mk);
map.centerAndZoom(r.point, 13);
map.panTo(r.point);
//alert('您的位置:'+r.point.lng+','+r.point.lat);
//var point = new BMap.Point(r.point.lng, r.point.lat);
var circle = new BMap.Circle(r.point,3000,{strokeColor:"blue", strokeWeight:2, strokeOpacity:0.5,fillColor:""});
var bounds = getSquareBounds(circle.getCenter(),circle.getRadius());
for(var i = 0; i<data.list.length; i++ ){
(function(){
//var company = data.list[i].name;
var localA = data.list[i].address;
var ph = data.list[i].phone;
var myGeo = new BMap.Geocoder();
// 将地址解析结果显示在地图上,并调整地图视野,result是一个point点
myGeo.getPoint(localA, function(result){
if (result) {
//alert(result.lat);
if(bounds.containsPoint(result)){
// alert(result.lat);
var marker = new BMap.Marker(result);
// if(flag){
// map.centerAndZoom(result, 13);
// flag = false;
// }
map.addOverlay(marker);
var infoWindow = new BMap.InfoWindow("受理地址:"+localA+"<br>电话:"+ph, opts); // 创建信息窗口对象
marker.addEventListener("click", function(){
map.openInfoWindow(infoWindow,result); //开启信息窗口
}) ;
}
//marker_1.addEventListener("click",openInfo.bind(null,infoWindow));
}
}, "上海市");
})();
}
map.addOverlay(circle);
}
else {
alert('failed'+this.getStatus());
}
},{enableHighAccuracy: true});
function getSquareBounds(centerPoi,r){
var a = Math.sqrt(2) * r; //正方形边长
mPoi = getMecator(centerPoi);
var x0 = mPoi.x, y0 = mPoi.y;
var x1 = x0 + a / 2 , y1 = y0 + a / 2;//东北点
var x2 = x0 - a / 2 , y2 = y0 - a / 2;//西南点
var ne = getPoi(new BMap.Pixel(x1, y1)), sw = getPoi(new BMap.Pixel(x2, y2));
return new BMap.Bounds(sw, ne);
}
//根据球面坐标获得平面坐标。
function getMecator(poi){
return map.getMapType().getProjection().lngLatToPoint(poi);
}
//根据平面坐标获得球面坐标。
function getPoi(mecator){
return map.getMapType().getProjection().pointToLngLat(mecator);
}
</script>
</html>