BIGEMAP卫星地图_高清卫星地图_北斗高清地图_地图软件_矢量地图数据_专题地图

BIGEMPA Js API示例中心

框選范圍篩查點位.源代碼展示

代碼編輯區 運行 下載 還原
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>繪制</title>
    <script src="/Public/common/js/jquery.min.js"></script>
    <link href="http://ua.bigemap.com:30081/bmsdk/bigemap.js/v2.1.0/bigemap.css" rel="stylesheet"/>
    <script src="http://ua.bigemap.com:30081/bmsdk/bigemap.js/v2.1.0/bigemap.js"></script>
    <link href="https://cdn.bootcdn.net/ajax/libs/Buttons/2.0.0/css/buttons.min.css" rel="stylesheet">
    <!--
     以下CSS地址請在安裝軟件了替換成本地的地址
     CSS地址請使用:
     http://localhost:9000/bigemap.js/v2.1.0/bigemap.css
     JS地址請使用:
     http://localhost:9000/bigemap.js/v2.1.0/bigemap.js
     軟件下載地址 http://www.cnhrsm.com/reader/download/detail201802017.html
    -->
    <!--<link href='http://www.cnhrsm.com:9000/bigemap.js/v2.1.0/bigemap.css' rel='stylesheet' />-->
    <!--<script src='http://www.cnhrsm.com:9000/bigemap.js/v2.1.0/bigemap.js'></script>-->
    <!--引入鼠標繪制的JS+CSS-->
    <!--對應下面的CSS+JS的下載地址 請直接訪問 http://bigemap.com/Public/mouse_draw/mouse_draw.zip 來下載-->
    <link rel="stylesheet" href="http://www.cnhrsm.com/Public/mouse_draw/Bigemap.draw.css"/>
    <script src="http://www.cnhrsm.com/Public/js/bm.draw.min.js"></script>

</head>
<style type="text/css">
    * {
        padding: 0;
        margin: 0;
    }

    html, body, #map {
        width: 100%;
        height: 100%;
    }

    .btnbox {
        position: absolute;
        z-index: 10;
        right: 20px;
        top: 20px;
        display: inline-block;
        display: flex;
        flex-direction: column;
    }

    .btnbox button {
        margin-top: 10px;
        height: 50px;
        width: 150px;
        font-size: 13px;
    }

    /*重寫默認的字體的屬性*/
    .my_tooltip {
        color: red;
        background: transparent;
        border: none;
        font-size: 18px;
    }

    .my_tooltip::before {
        display: none;
    }

    .kxtip {
        position: absolute;
        top: 30px;
        left: 50px;
        padding: 10px;
        background-color: white;
        color: black;
        z-index: 2
    }
</style>
<body>
<div class="btnbox">
    <button onclick="drawlayer('polygon')" class="button button-tiny button-rounded button-primary">多邊形框選范圍</button>
    <button onclick="drawlayer('circle')" class="button button-tiny button-rounded button-primary">圓形框選范圍</button>
</div>
<div id="map">

</div>
<div class="kxtip">
    <span>當前范圍內選中的點有:</span>
    <div class="xzdiv">

    </div>
</div>
<script>
    var originalInitTile = window.BM.GridLayer.prototype._initTile;
    window.BM.GridLayer.include({
        _initTile: function (tile) {
            originalInitTile.call(this, tile);
            var tileSize = this.getTileSize();
            tile.style.width = tileSize.x + 1 + 'px';
            tile.style.height = tileSize.y + 1 + 'px';
        }
    })
</script>
<script>

    BM.Config.HTTP_URL = "http://ua.bigemap.com:30081/bmsdk/"

    // 在ID為map的元素中實例化一個地圖,并設置地圖的ID號為 bigemap.zhongkexingtu,ID號程序自動生成,無需手動配置,并設置地圖的投影為百度地圖 ,中心點,默認的級別和顯示級別控件
    var map = BM.map('map', 'bigemap.dc-satellite', {
        crs: BM.CRS.EPSG4326,
        center: [39.905963, 116.390813],
        zoom: 8,
        zoomControl: true,
        attributionControl: false
    });
    let marker_arr = []
    let pass_layer = ''

    //生成假數據  數據應該又后端提供
    for (var i = 0; i < 200; i++) {
        var lat = 39.905963 + (Math.random() - Math.random()) * 3;
        var lng = 116.390813 + (Math.random() - Math.random()) * 3;

        let marker = BM.marker([lat, lng]).addTo(map)
        marker.id = i;
        marker.bindTooltip(i + '', {direction: 'bottom', permanent: true, className: 'my_tooltip'})
        marker_arr.push(marker)
    }

    //創建一個圖形覆蓋物的集合來保存點線面
    var drawnItems = new BM.FeatureGroup();
    //添加在地圖上
    map.addLayer(drawnItems);


    //監聽繪畫完成事件
    map.on(BM.Draw.Event.CREATED, function (e) {
        //判斷是否存在繪制的layer 刪除掉
        if (pass_layer != '') pass_layer.remove()
        var layer = e.layer;
        let layertype = e.layerType
        pass_layer = layer

        drawnItems.addLayer(layer);
        let in_arr = []
        //判斷是多邊形還是圓形
        if (layertype == 'polygon') {
            //判斷哪些點在多邊形里
            let polygonlatlng = layer.getLatLngs()

            //polygon的平面左邊數組
            let ps = polygonlatlng[0].map(v => {
                let arr = [v.lat, v.lng]
                return [map.project(arr).x, map.project(arr).y];
            });

            marker_arr.forEach(v => {
                let latlng = v.getLatLng()
                //點的平面坐標
                var point = map.project([latlng.lat, latlng.lng]);
                if (isIn([point.x, point.y], ps)) {
                    in_arr.push(v.id)
                }
            })

        } else if (layertype == 'circle') {
            //圓形
            //比較中心點
            let center = layer.getLatLng();
            let radius = layer.getRadius();

            marker_arr.forEach(v => {
                let latlngs = [v.getLatLng(), center]
                //計算距離
                let distance = map.distance(latlngs[0], latlngs[1]);
                if (distance <= radius) {
                    in_arr.push(v.id)
                }
            })
        }
        //提示在框選范圍的marker
        appendtip(in_arr)
        draw.disable()
        draw = ''
    });
    //設置一個變量來保存當前的繪制對象
    var draw;

    function drawlayer(type) {
        if (!draw) {
            switch (type) {
                case 'polygon':
                    draw = new BM.Draw.Polygon(map);
                    break;
                case 'circle':
                    draw = new BM.Draw.Circle(map);
                    break;
            }

        }
        draw.enable();
    }

    let xzdiv = document.getElementsByClassName('xzdiv')


    //展示tip
    function appendtip(arr) {
        console.log(xzdiv)
        let div2 = document.createElement('div')
        arr.forEach(v => {
            let span2 = document.createElement('span')
            span2.innerText = v + ','
            div2.append(span2)
        })
        console.log(div2)
        xzdiv[0].innerHTML = div2.innerHTML
    }

    //判斷函數
    function isIn(a, b, c) {
        var d = a[0];
        a = a[1];
        var e = !1, f, h, k, l, m = b.length, n = 0;
        for (l = m - 1; n < m; l = n,
            n += 1) {
            var p = !1;
            f = b[n][0];
            h = b[n][1];
            k = b[l][0];
            l = b[l][1];
            if (f === d && h === a || k === d && l === a)
                return c ? !0 : !1;
            if (h < a === l >= a) {
                f = (k - f) * (a - h) / (l - h) + f;
                if (d === f)
                    return c ? !0 : !1;
                p = d < f
            }
            p && (e = !e)
        }
        return e
    }

</script>
</body>
</html>                                                
主站蜘蛛池模板: 找网页游戏鬼服 高返利鬼服游戏平台 鬼服开服表 - 猫游戏鬼服大全 | 红河州春辉装饰有限公司官网 | 烟台废旧物资回收,烟台废品回收,烟台物资回收-烟台金泰再生资源有限公司 | 兰州物流公司_兰州货运公司_兰州物流电话上门取货_兰州立辉物流公司 | 塑胶跑道厂家_河北小区健身器材_悬浮地板-河北达创体育器材有限公司 | 真空清洗炉_真空煅烧炉_铸铝加热器-盐城市钰凯电器有限公司 | 郑州编织袋厂_郑州塑料编织袋_河南塑料编织袋厂-河南宏旺塑料编织袋厂家 | 质量技术监督12365防伪追溯平台-www.12365china.net | 模压化粪池_三格式化粪池_玻璃钢化粪池厂家 | 内蒙古国际门窗幕墙展览会 | 医疗器械招标网—打造医械厂家专业服务平台 | 南京仁康体检--南京仁康门诊部有限公司| 喜有沃-河南不锈钢管厂家批发201,304不锈钢管-现货规格齐全 | 首页 | 华源医药网| 萍乡市宏运特种陶瓷有限公司| 快达物流:电商和微商的仓储物流外包和托管服务-北京快达国际物流服务有限公司官方网站 | 小程序商城,_电商系统源码,直播商城定制开发电商系统源码,电商系统,java电商系统 | 球墨井盖厂家-铸铁井盖批发-雨水篦子生产厂家-安徽含山县林头新华铸造厂 | 呼吸家官网|肺功能检测仪生产厂家|国产肺功能仪知名品牌|肺功能检测仪|肺功能测试仪|婴幼儿肺功能仪|弥散残气肺功能仪|肺功能测试系统|广州红象医疗科技有限公司|便携式肺功能仪|大肺功能仪|呼吸康复一体机|儿童肺功能仪|肺活量计|医用简易肺功能仪|呼吸康复系统|肺功能仪|弥散肺功能仪(大肺)|便携式肺功能检测仪|肺康复|呼吸肌力测定肺功能仪|肺功能测定仪|呼吸神经肌肉刺激仪|便携式肺功能 | 拉丝机_拔丝机_拉丝设备_丝网机械 - 安平县泰煌拉丝机厂家 | 快速卷帘门-电动卷帘门-快速堆积门-快速门厂家-任丘市康速机电设备有限公司 | 全通径焊接球阀_全焊接球阀「生产厂家」批发-浙江信合阀门有限公司 | 西安宣传片拍摄,陕西艺景网络科技有限公司资料备份,西安影视公司,视频拍摄制作,抖音视频制作,纪录片拍摄西安短视频摄影团队,西安抖音视频拍摄 | 景德镇芳然装饰有限公司 | 橡胶粉碎机_轮胎粉碎机_橡胶切条机_橡胶粉碎机价格_河南鑫世昌机械制造有限公司 | 潍坊志扬机械有限公司_扫地机-抓蔗机-履带运输机-自上料搅拌车 | 余压控制器,余压监控系统,余压传感器-浙江巨川电气科技有限公司 | 上海互动多媒体公司_上海触摸屏软件开发_上海互动投影开发_上海VR虚拟现实制作_上海全息投影制作_上海互动轨道屏制作—盟邑数字 上海浩斌信息科技有限公司RFID读写器,IC卡读卡器,手持机,数据采集终端,电力仓库管理软件开发,固定资产软件,纱管标签,试剂管理,RFID试剂柜,档案管理,档案柜,智能货架 | 潍坊亿宏重工机械有限公司,破碎机,高性能立磨机,颚式破碎机,锤式破碎机反击式破碎机,重锤式破碎机,高性能反击式破碎机,圆锥式破碎机,给料机系列,链板给料机系列,简易给料机系列,振动给料机 | 汽车智能防撞系统_智能刹车_77G毫米波雷达_麒云科技疲劳驾驶预警 | 济南诚润达贸易有限公司 - 专注专营巴斯夫防冻冷却液 | 形创(CREAFORM)3D扫描仪|三维检测|三维数字化处理|3D设备租赁|3D打印|——北京中显恒业仪器仪表有限公司 | 苏州探测器清洗_烟感探头清洗_感烟探测器维修清洗_火灾探测器清洗报价/价格_进口国产消防设备清洗_江苏智淼探测器清洗厂家- | 数字多媒体展厅设计,智慧科技互动企业展馆展厅设计公司-深圳炫之风 | 性激素6项实验检测,放射免疫实验检测,明胶酶谱试剂盒,科研用人血清,质控标品,试剂盒-南京信帆生物技术有限公司 | 舞台阻燃幕布_舞台幕布_舞台吊杆_舞台机械_TYWT-泰州通用舞台设备有限公司 | 商标注册_商标转让交易_专利申请_版权登记_ISO认证服务咨询-世标知识产权 | 欧美日韩人妻精品一区二区三区_欧美成人精品欧美一级乱黄_亚洲欧美日韩高清一区二区三区_国产一级做a爰片久久毛片_日韩一级视频在线观看播放_精品一区二区三区免费毛片爱_完整观看高清秒播国内外精品资源 | 社会百态,七仙女思春完整版免费高清电影引发的思考 | 小型加油机价格- 柴油加油机多少钱一台| 万通汽车学校,汽车学校,汽修学校,汽修培训学校,汽车美容学校,汽车维修学校,学汽修-武汉万通汽车学校官方网站 |