這是官方提供的一個js
能夠從我gihub下載: https://github.com/liaotuo/BMapAPI/js
js行數過多就不展現了javascript
<!-- liaotuo 2016.09.25 判斷點是否在圓形區域內(用於電子圍欄) --> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> <style type="text/css"> body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微軟雅黑";} </style> <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=百度地圖API開發者密鑰AK"></script> <script type="text/javascript" src="js/GeoUtils.js"></script> <title>圓形區域判斷</title> </head> <body> <div id="allmap"></div> </body> </html> <script type="text/javascript"> //建立地圖 var map = new BMap.Map("allmap"); //建立一個圓 var circle = new BMap.Circle(new BMap.Point(112.595384,26.904631),1000,{fillColor:"blue", strokeWeight: 1 ,fillOpacity: 0.3, strokeOpacity: 0.3}); var point2s = [ new BMap.Point(112.586149,26.913201), new BMap.Point(112.58464,26.909432), new BMap.Point(112.585143,26.899219), new BMap.Point(112.600953,26.898832), new BMap.Point(112.607421,26.900572), new BMap.Point(112.606631,26.904825), new BMap.Point(112.606523,26.909142), new BMap.Point(112.59772,26.909399), ]; //建立標註點並添加到地圖中 function addMarker(points) { //循環創建標註點 for(var i=0, pointsLen = points.length; i<pointsLen; i++) { var marker = new BMap.Marker(points[i]); //將點轉化成標註點 map.addOverlay(marker); //將標註點添加到地圖上 //添加監聽事件 (function() { var thePoint = points[i]; marker.addEventListener("click", function() { showInfo(this,thePoint); }); })(); } } function showInfo(thisMarker,point) { //判斷點是否在 if(BMapLib.GeoUtils.isPointInCircle(point,circle)){ var infoWindow = new BMap.InfoWindow("在圓形區域內"); thisMarker.openInfoWindow(infoWindow); //圖片加載完後重繪infoWindow }else { var infoWindow = new BMap.InfoWindow("不在圓形區域內"); thisMarker.openInfoWindow(infoWindow); //圖片加載完後重繪infoWindow } } function initialize() { alert("點擊標註點能夠顯示是否在區域內"); // 百度地圖API功能 map.addControl(new BMap.NavigationControl()); // 添加平移縮放控件 map.addControl(new BMap.ScaleControl()); // 添加比例尺控件 map.addControl(new BMap.OverviewMapControl()); //添加縮略地圖控件 map.enableScrollWheelZoom(); //啓用滾輪放大縮小 map.addControl(new BMap.MapTypeControl()); //添加地圖類型控件 var point = new BMap.Point(112.595384,26.904631); // 建立點座標 map.centerAndZoom(point,15); // 初始化地圖,設置中心點座標和地圖級別。 addMarker(point2s); map.addOverlay(circle); } initialize(); </script>
<!-- liaotuo 2016.09.11 判斷點在多邊形內 --> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> <style type="text/css"> body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微軟雅黑";} </style> <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=百度地圖API開發者密鑰AK"></script> <script type="text/javascript" src="js/GeoUtils.js"></script> <title>圓形區域判斷</title> </head> <body> <div id="allmap"></div> </body> </html> <script type="text/javascript"> //建立地圖 var map = new BMap.Map("allmap"); //建立一個多邊形 //建立多邊形 var polygon2 = new BMap.Polygon([ new BMap.Point(112.579325,26.915291), new BMap.Point(112.584967,26.899086), new BMap.Point(112.608287,26.898023), new BMap.Point(112.605035,26.90764), new BMap.Point(112.602825,26.914356), new BMap.Point(112.588254,26.909862), ], {strokeColor:"#f50704",fillColor:"#cfcfcf", strokeWeight:5, strokeOpacity:0,fillOpacity:0,}); var point2s = [ new BMap.Point(112.586149,26.913201), new BMap.Point(112.58464,26.909432), new BMap.Point(112.585143,26.899219), new BMap.Point(112.600953,26.898832), new BMap.Point(112.607421,26.900572), new BMap.Point(112.606631,26.904825), new BMap.Point(112.606523,26.909142), new BMap.Point(112.59772,26.909399), ]; //建立標註點並添加到地圖中 function addMarker(points) { //循環創建標註點 for(var i=0, pointsLen = points.length; i<pointsLen; i++) { var marker = new BMap.Marker(points[i]); //將點轉化成標註點 map.addOverlay(marker); //將標註點添加到地圖上 //添加監聽事件 (function() { var thePoint = points[i]; marker.addEventListener("click", function() { showInfo(this,thePoint); }); })(); } } function showInfo(thisMarker,point) { //判斷點是否在 if(BMapLib.GeoUtils.isPointInPolygon(point,polygon2)){ var infoWindow = new BMap.InfoWindow("在區域內"); thisMarker.openInfoWindow(infoWindow); //圖片加載完後重繪infoWindow }else { var infoWindow = new BMap.InfoWindow("不在區域內"); thisMarker.openInfoWindow(infoWindow); //圖片加載完後重繪infoWindow } } function initialize() { alert("點擊標註點能夠顯示是否在區域內"); // 百度地圖API功能 map.addControl(new BMap.NavigationControl()); // 添加平移縮放控件 map.addControl(new BMap.ScaleControl()); // 添加比例尺控件 map.addControl(new BMap.OverviewMapControl()); //添加縮略地圖控件 map.enableScrollWheelZoom(); //啓用滾輪放大縮小 map.addControl(new BMap.MapTypeControl()); //添加地圖類型控件 var point = new BMap.Point(112.595384,26.904631); // 建立點座標 map.centerAndZoom(point,15); // 初始化地圖,設置中心點座標和地圖級別。 addMarker(point2s); map.addOverlay(polygon2); } initialize(); </script>
本文轉自:https://blog.csdn.net/c1481118216/article/details/52661934css