百度地圖開發總結----3.判斷一個點是否在一片區域內


主要用到了BMapLib.GeoUtils.isPointInPolygon(point, apolygon)這個函數,第一個參數為百度坐標點對象,new BMap.Point(x,y),

第二個參數為覆蓋物對象,對象,對象!!!(就在剛才寫demo的時候還傳錯了,傳的坐標數組,結果總是返回false,⊙﹏⊙b汗)。

代碼:

<script type="text/javascript" src="http://api.map.baidu.com/library/GeoUtils/1.2/src/GeoUtils_min.js"></script>

//想用這個方法需要引以上這個js文件

<div id="content">

  </div>
  <script type="text/javascript">
var mp = new BMap.Map('content');
     mp.enableScrollWheelZoom();//地圖隨鼠標滑輪滾動放大縮小的功能
var mypoint=new BMap.Point(117.339937,31.870068);//定義一個坐標對象
//初始化地圖的中心位置
     mp.centerAndZoom(mypoint, 14);   //第二個參數代表地圖的放大級數,目前是1-18 
var opt1 = { type: BMAP_NAVIGATION_CONTROL_LARGE }     //導航控件樣式
     mp.addControl(new BMap.NavigationControl(opt1));
     mp.addControl(new BMap.OverviewMapControl());         //略縮圖控件
     mp.addControl(new BMap.ScaleControl({ offset: new BMap.Size(75, 500) }));
     //比例尺控件
     mp.addControl(new BMap.MapTypeControl());     
mp.clearOverlays();//清除地圖上的覆蓋物
var apolygon_points=new Array();
apolygon_points.push(new BMap.Point(117.338937,31.880068));
apolygon_points.push(new BMap.Point(117.347992,31.857621));
apolygon_points.push(new BMap.Point(117.314072,31.856394));
var apolygon = new BMap.Polygon(apolygon_points, {
                             strokeColor: "red",
                             strokeWeight: 2,
                             strokeOpacity: 0.5,
                             fillOpacity: 0.4
                         });
mp.addOverlay(apolygon);
var opt={position:new BMap.Point(117.338937,31.880068),offset: new BMap.Size(0, 0)};
var lname="第九區"
var label = new BMap.Label(lname, opt);
mp.addOverlay(label);
var msg="";
var pt=new BMap.Point(117.338937,31.860068);
mp.addOverlay(new BMap.Marker(pt));
if (BMapLib.GeoUtils.isPointInPolygon(pt, apolygon)) {//如果點在區域內,返回true
            mp.addOverlay(new BMap.Marker(pt));
            msg = "在" + lname + "區域內";   
     }
else{
            mp.addOverlay(new BMap.Marker(pt));
            msg = "在" + lname + "區域外";   
}
var label2=new BMap.Label(msg,{position:pt,offset:new BMap.Size(0,0)});
mp.addOverlay(label2);
</script>

效果:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM