百度地图-地理围栏


地理围栏(Geo-fencing)是LBS的一种新应用,就是用一个虚拟的栅栏围出一个虚拟地理边界。当手机进入、离开某个特定地理区域,或在该区域内活动时,手机可以接收自动通知和警告。简单来说就是判断一个点是否在某区域内。

百度地图

百度地图Api中提供了GeoUtils_min.js这个工具类,主要用到的是BMapLib.GeoUtils.isPointInPolygon方法判断用户是否在预设区域,如果在则返回true,控制太输出:“在监控方位内”;如果不在预设区域则返回false,弹出警告框:“你已经逃离监控区域”

代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52

<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<title>百度地图-电子围栏</title>
<script src="https://cdn.bootcss.com/jquery/1.9.1/jquery.js"></script>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=3.0&ak=I9k7FGkhRfEg2UGG19DacuuB"></script>
<script src="http://api.map.baidu.com/library/GeoUtils/1.2/src/GeoUtils_min.js" type="text/javascript"></script>
</head>
<body>
<!--百度地图容器-->
<div style="width:100%;height:100%;position: absolute;" id="map"></div>
</body>
<script type="text/javascript">
//创建地图
var map = new BMap.Map("map");
var point = new BMap.Point(108.953439,34.265657); //设置地图的中心
map.centerAndZoom(point, 17); //设置地图的层级
map.addControl(new BMap.MapTypeControl()); //设置地图的类型控件
map.enableScrollWheelZoom(true); //滚轮滑动缩放地图

//添加多边形地理围栏
var polygon = new BMap.Polygon([
new BMap.Point(108.953331,34.267134),
new BMap.Point(108.952163,34.265299),
new BMap.Point(108.95351,34.26415),
new BMap.Point(108.95572,34.265881),
new BMap.Point(108.953546,34.26679)
], {
strokeColor: "blue",//边线颜色
fillColor: "", //填充颜色
strokeWeight: 2, //边线的宽度,以像素为单位。
strokeOpacity: 0.5 //填充的透明度,取值范围0 - 1。

}); //创建多边形
map.addOverlay(polygon);
//鼠标点击获取坐标
map.addEventListener("click", function (e) {
var lng = e.point.lng;
var lat = e.point.lat;
var myPoint = new BMap.Point(lng, lat)
if (BMapLib.GeoUtils.isPointInPolygon(myPoint, polygon)) {
console.log("在监控方位内")
} else {
console.log("你已经逃离监控区域")
}
})
</script>
</html>

-------------本文结束感谢您的阅读-------------