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.bigemap.com/reader/download/detail201802017.html
    -->
    <link href='http://www.bigemap.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.bigemap.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.bigemap.com:9000';
        
        // 在ID为map的元素中实例化一个地图,并设置地图的ID号为 bigemap.baidu-map,ID号程序自动生成,无需手动配置,并设置地图的投影为百度地图 ,中心点,默认的级别和显示级别控件
        var map = BM.map('map', 'bigemap.googlemap-streets', { center: [0, 0], zoom: 2, zoomControl: true,attributionControl:false });
        var latlngs = [
            {lat:30, lng:102.68},
            {lat:37, lng:108.43},
            {lat:37.04, lng:118.2}
        ];
        //创建多边形,并设置填充颜色为红色 ,具体详细API请参见:http://www.bigemap.com/offlinemaps/api/#polygon
        var polygon = BM.polygon(latlngs, {color: 'red'}).addTo(map);
        // 让地图适配当前的线段
        map.fitBounds(polygon.getBounds());
        var area=CalculatePolygonArea(latlngs);
        //计算面积并使用一个提示层显示出来
        polygon.bindTooltip('面积:'+area+'㎡').openTooltip();
        function CalculatePolygonArea (latLngs) {
            var pointsCount = latLngs.length,
                area = 0.0,
                d2r = Math.PI / 180,
                p1, p2;

            if (pointsCount > 2) {
                for (var i = 0; i < pointsCount; i++) {
                    p1 = latLngs[i];
                    p2 = latLngs[(i + 1) % pointsCount];
                    area += ((p2.lng - p1.lng) * d2r) *
                        (2 + Math.sin(p1.lat * d2r) + Math.sin(p2.lat * d2r));
                }
                area = area * 6378137.0 * 6378137.0 / 2.0;
            }

            return Math.abs(area);
        }

    </script>
</body>
</html>