• 百度地图开发总结----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>

    效果:

  • 相关阅读:
    第十一次作业——LL(1)文法
    wechall前十题
    [V&N2020 公开赛]TimeTravel 复现
    CTFHub web技能树之RCE初步 命令注入+过滤cat
    算法第四章作业
    算法第四章上机实践报告
    算法第三章作业
    算法第三章上机实践报告
    算法--第二章作业
    算法第二章上机报告
  • 原文地址:https://www.cnblogs.com/soundcode/p/7569174.html
Copyright © 2020-2023  润新知