十大赌博游戏大全

BIGEMPA Js API示例中心

判断点是否在多边形内源代码展示

代码编辑区 运行 下载 还原
<!DOCTYPE html>

<html>
<head>
    <meta charset='UTF-8' />
    <meta name='viewport' content='initial-scale=1,maximum-scale=1,user-scalable=no' />
    <!--
        以下CSS地址请在安装软件了替换成本地的地址
        CSS地址请使用:
        http://localhost:9000/bigemap.js/v2.1.0/bigemap.css
        软件下载地址 http://www.0631cc.com/reader/download/detail201802017.html
    -->
    <link href='http://www.0631cc.com:9000/bigemap.js/v2.1.0/bigemap.css' rel='stylesheet' />
    <!--
        JS地址请使用:
        http://localhost:9000/bigemap.js/v2.1.0/bigemap.js
    -->
    <script src='http://www.0631cc.com:9000/bigemap.js/v2.1.0/bigemap.js'></script>
    <style>
        body { margin: 0; padding: 0; }
        #map { position: absolute; top: 0; bottom: 0; width: 100%; }
    </style>
    <title>Google Map Streets</title>
</head>
<body>
    <div id='map'></div>
    <script>
        // 软件配置信息地址,软件安装完成之后使用本地地址,如:http://localhost:9000
        BM.Config.HTTP_URL = 'http://www.0631cc.com:9000';
        
        // 在ID为map的元素中实例化一个地图,并设置地图的ID号为 bigemap.baidu-map,ID号程序自动生成,无需手动配置,并设置地图的投影为百度地图 ,中心点,默认的级别和显示级别控件
        var map = BM.map('map', 'bigemap.googlemap-streets', { center: [0, 0], zoom: 2, zoomControl: true });
        var latlngs = [
            [30, 102.68],
            [37, 108.43],
            [37.04, 118.2]
        ];
        //创建多边形,并设置填充颜色 ,具体详细API请参见:http://www.0631cc.com/offlinemaps/api/#polygon
        var polygon = BM.polygon(latlngs, {color: '#369'}).addTo(map);
        // 让地图适配当前的线段
        map.fitBounds(polygon.getBounds());
        map.on('click',function(e){
            if(isInPolygon([e.latlng.lng,e.latlng.lat],latlngs.map(function(v){return [v[1],v[0]]}))){
                alert('在内部');
            }else{
                alert('在外部');
            }
        });
        function isInPolygon(checkPoint, polygonPoints) {
            var counter = 0;
            var i;
            var xinters;
            var p1, p2;
            var pointCount = polygonPoints.length;
            p1 = polygonPoints[0];
         
            for (i = 1; i <= pointCount; i++) {
                p2 = polygonPoints[i % pointCount];
                if (
                    checkPoint[0] > Math.min(p1[0], p2[0]) &&
                    checkPoint[0] <= Math.max(p1[0], p2[0])
                ) {
                    if (checkPoint[1] <= Math.max(p1[1], p2[1])) {
                        if (p1[0] != p2[0]) {
                            xinters =
                                (checkPoint[0] - p1[0]) *
                                    (p2[1] - p1[1]) /
                                    (p2[0] - p1[0]) +
                                p1[1];
                            if (p1[1] == p2[1] || checkPoint[1] <= xinters) {
                                counter++;
                            }
                        }
                    }
                }
                p1 = p2;
            }
            if (counter % 2 == 0) {
                return false;
            } else {
                return true;
            }
        }
    </script>
</body>
</html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
五分时时彩 百万彩票 67娱乐系统 山东十一运夺金 六福彩票注册 彩票微信群和qq群 极速PK拾 上海11选5 亚洲十大博彩公司 十大权威博彩正规游戏网址