zoukankan      html  css  js  c++  java
  • 判断一个地图坐标是否在中国镜内

    以下语言为js,所取的坐标以百度地图为准,所以需引用百度api,其它的坐标请转换后在判断即可。

    1:创建中国地图边界线数组

    function CreateChinaMapLine() {
        var pts = [];
        pt1 = new BMap.Point(124.326919, 39.841287);
        pts.push(pt1);
        pt2 = new BMap.Point(124.630475, 40.230192);
        pts.push(pt2);
        pt3 = new BMap.Point(124.980023, 40.420289);
        pts.push(pt3);
        pt4 = new BMap.Point(125.053612, 40.458947);
        pts.push(pt4);
        pt5 = new BMap.Point(125.028316, 40.520401);
        pts.push(pt5);
        pt6 = new BMap.Point(125.331871, 40.63438);
        pts.push(pt6);
        pt7 = new BMap.Point(125.456053, 40.61861);
        pts.push(pt7);
        pt8 = new BMap.Point(126.042467, 40.901897);
        pts.push(pt8);
        pt9 = new BMap.Point(126.888743, 41.73411);
        pts.push(pt9);
        pt10 = new BMap.Point(127.367072, 41.437131);
    
        pts.push(pt10);
        pt11 = new BMap.Point(128.148958, 41.347076);
        pts.push(pt11);
        pt12 = new BMap.Point(128.323732, 41.568524);
        pts.push(pt12);
        pt13 = new BMap.Point(128.112163, 41.961089);
        pts.push(pt13);
        pt14 = new BMap.Point(128.995233, 41.99541);
        pts.push(pt14);
        pt15 = new BMap.Point(129.418371, 42.378521);
        pts.push(pt15);
        pt16 = new BMap.Point(129.841509, 42.41943);
        pts.push(pt16);
        pt17 = new BMap.Point(130.080674, 42.90824);
        pts.push(pt17);
        pt18 = new BMap.Point(130.65099, 42.364879);
        pts.push(pt18);
        pt19 = new BMap.Point(130.503812, 42.637157);
        pts.push(pt19);
        pt20 = new BMap.Point(131.147717, 42.867653);
        pts.push(pt20);
    
        pt21 = new BMap.Point(131.313293, 43.366337);
        pts.push(pt21);
        pt22 = new BMap.Point(131.386882, 43.967324);
        pts.push(pt22);
        pt23 = new BMap.Point(131.202909, 44.798523);
        pts.push(pt23);
        pt24 = new BMap.Point(131.938801, 45.190155);
        pts.push(pt24);
        pt25 = new BMap.Point(133.024241, 44.916296);
        pts.push(pt25);
        pt26 = new BMap.Point(134.385641, 47.183241);
        pts.push(pt26);
        pt27 = new BMap.Point(134.845574, 47.670159);
        pts.push(pt27);
        pt28 = new BMap.Point(134.73519, 48.066299);
        pts.push(pt28);
        pt29 = new BMap.Point(135.250314, 48.434915);
        pts.push(pt29);
        pt30 = new BMap.Point(133.079433, 48.115602);
        pts.push(pt30);
    
        pt31 = new BMap.Point(132.453925, 47.76948);
        pts.push(pt31);
        pt32 = new BMap.Point(131.221306, 47.707427);
        pts.push(pt32);
        pt33 = new BMap.Point(130.85336, 48.078629);
        pts.push(pt33);
        pt34 = new BMap.Point(130.908552, 48.825163);
        pts.push(pt34);
        pt35 = new BMap.Point(128.093766, 49.632427);
        pts.push(pt35);
        pt36 = new BMap.Point(125.830898, 53.063643);
        pts.push(pt36);
        pt37 = new BMap.Point(123.420852, 53.60326);
        pts.push(pt37);
        pt38 = new BMap.Point(120.661258, 53.240599);
        pts.push(pt38);
        pt39 = new BMap.Point(119.906969, 52.584436);
        pts.push(pt39);
        pt40 = new BMap.Point(120.698052, 52.494695);
        pts.push(pt40);
    
        pt41 = new BMap.Point(120.734847, 52.05456);
        pts.push(pt41);
        pt42 = new BMap.Point(119.023898, 50.296998);
        pts.push(pt42);
        pt43 = new BMap.Point(119.263063, 50.143545);
        pts.push(pt43);
        pt44 = new BMap.Point(117.956855, 49.560675);
        pts.push(pt44);
        pt45 = new BMap.Point(116.889812, 49.858941);
        pts.push(pt45);
        pt46 = new BMap.Point(115.47322, 48.078629);
        pts.push(pt46);
        pt47 = new BMap.Point(115.988344, 47.607987);
        pts.push(pt47);
        pt48 = new BMap.Point(116.797825, 47.76948);
        pts.push(pt48);
        pt49 = new BMap.Point(117.349744, 47.520821);
        pts.push(pt49);
        pt50 = new BMap.Point(117.901663, 47.905734);
        pts.push(pt50);
    
        pt51 = new BMap.Point(118.508774, 47.893363);
        pts.push(pt51);
        pt52 = new BMap.Point(118.545569, 47.86861);
        pts.push(pt52);
        pt53 = new BMap.Point(119.888571, 46.843488);
        pts.push(pt53);
        pt54 = new BMap.Point(119.796585, 46.590415);
        pts.push(pt54);
        pt55 = new BMap.Point(119.005501, 46.717101);
        pts.push(pt55);
        pt56 = new BMap.Point(117.791279, 46.526961);
        pts.push(pt56);
        pt57 = new BMap.Point(117.404936, 46.310656);
        pts.push(pt57);
        pt58 = new BMap.Point(116.797825, 46.323404);
        pts.push(pt58);
        pt59 = new BMap.Point(116.282701, 45.798295);
        pts.push(pt59);
        pt60 = new BMap.Point(114.700534, 45.384961);
        pts.push(pt60);
    
        pt61 = new BMap.Point(113.670285, 44.759212);
        pts.push(pt61);
        pt62 = new BMap.Point(112.161707, 45.04687);
        pts.push(pt62);
        pt63 = new BMap.Point(111.444212, 44.298587);
        pts.push(pt63);
        pt64 = new BMap.Point(111.959336, 43.767669);
        pts.push(pt64);
        pt65 = new BMap.Point(110.082812, 42.569199);
        pts.push(pt65);
        pt66 = new BMap.Point(107.543985, 42.39216);
        pts.push(pt66);
        pt67 = new BMap.Point(105.115542, 41.609961);
        pts.push(pt67);
        pt68 = new BMap.Point(100.405834, 42.596391);
        pts.push(pt68);
        pt69 = new BMap.Point(96.560799, 42.772848);
        pts.push(pt69);
        pt70 = new BMap.Point(91.188788, 45.203163);
        pts.push(pt70);
    
        pt71 = new BMap.Point(89.992964, 47.893363);
        pts.push(pt71);
        pt72 = new BMap.Point(87.969261, 49.115857);
        pts.push(pt72);
        pt73 = new BMap.Point(86.847026, 49.055436);
        pts.push(pt73);
        pt74 = new BMap.Point(85.724791, 48.201769);
        pts.push(pt74);
        pt75 = new BMap.Point(85.301653, 47.05766);
        pts.push(pt75);
        pt76 = new BMap.Point(83.167567, 47.23339);
        pts.push(pt76);
        pt77 = new BMap.Point(82.284497, 45.52739);
        pts.push(pt77);
        pt78 = new BMap.Point(82.652442, 45.177144);
        pts.push(pt78);
        pt79 = new BMap.Point(81.769372, 45.346053);
        pts.push(pt79);
        pt80 = new BMap.Point(79.911245, 44.890145);
        pts.push(pt80);
    
        pt81 = new BMap.Point(80.702329, 43.20505);
        pts.push(pt81);
        pt82 = new BMap.Point(80.003232, 42.077702);
        pts.push(pt82);
        pt83 = new BMap.Point(77.096459, 41.05527);
        pts.push(pt83);
        pt84 = new BMap.Point(76.158197, 40.369298);
        pts.push(pt84);
        pt85 = new BMap.Point(75.753456, 40.594072);
        pts.push(pt85);
        pt86 = new BMap.Point(74.925578, 40.48178);
        pts.push(pt86);
        pt87 = new BMap.Point(73.803343, 39.605094);
        pts.push(pt87);
        pt88 = new BMap.Point(73.637767, 39.291284);
        pts.push(pt88);
        pt89 = new BMap.Point(73.913726, 38.457149);
        pts.push(pt89);
        pt90 = new BMap.Point(74.612824, 38.500536);
        pts.push(pt90);
    
        pt91 = new BMap.Point(74.999167, 37.31988);
        pts.push(pt91);
        pt92 = new BMap.Point(77.924337, 35.325072);
        pts.push(pt92);
        pt93 = new BMap.Point(78.273886, 34.598061);
        pts.push(pt93);
        pt94 = new BMap.Point(79.101764, 34.293224);
        pts.push(pt94);
        pt95 = new BMap.Point(78.770613, 33.987267);
        pts.push(pt95);
        pt96 = new BMap.Point(79.230545, 32.472038);
        pts.push(pt96);
        pt97 = new BMap.Point(78.880997, 32.59672);
        pts.push(pt97);
        pt98 = new BMap.Point(78.421064, 32.425237);
        pts.push(pt98);
        pt99 = new BMap.Point(78.844202, 31.18404);
        pts.push(pt99);
        pt100 = new BMap.Point(81.180659, 29.990271);
        pts.push(pt100);
    
        pt101 = new BMap.Point(81.71418, 30.34198);
        pts.push(pt101);
        pt102 = new BMap.Point(86.092737, 27.935542);
        pts.push(pt102);
        pt103 = new BMap.Point(88.760345, 27.951881);
        pts.push(pt103);
        pt104 = new BMap.Point(88.99951, 27.197728);
        pts.push(pt104);
        pt105 = new BMap.Point(89.845786, 28.098817);
        pts.push(pt105);
        pt106 = new BMap.Point(91.538337, 27.772017);
        pts.push(pt106);
        pt107 = new BMap.Point(92.108653, 26.769165);
        pts.push(pt107);
        pt108 = new BMap.Point(93.893191, 26.851709);
        pts.push(pt108);
        pt109 = new BMap.Point(95.916893, 28.115131);
        pts.push(pt109);
        pt110 = new BMap.Point(97.223102, 27.690161);
        pts.push(pt110);
    
        pt111 = new BMap.Point(97.609445, 28.375809);
        pts.push(pt111);
        pt112 = new BMap.Point(98.363734, 27.427807);
        pts.push(pt112);
        pt113 = new BMap.Point(98.73168, 26.653501);
        pts.push(pt113);
        pt114 = new BMap.Point(97.646239, 24.702995);
        pts.push(pt114);
        pt115 = new BMap.Point(97.627842, 23.842845);
        pts.push(pt115);
        pt116 = new BMap.Point(98.658091, 23.944344);
        pts.push(pt116);
        pt117 = new BMap.Point(98.970845, 23.045009);
        pts.push(pt117);
        pt118 = new BMap.Point(99.449174, 22.89168);
        pts.push(pt118);
        pt119 = new BMap.Point(99.21001, 21.96805);
        pts.push(pt119);
        pt120 = new BMap.Point(99.982696, 21.933723);
        pts.push(pt120);
    
        pt121 = new BMap.Point(100.166669, 21.366121);
        pts.push(pt121);
        pt122 = new BMap.Point(101.086534, 21.589991);
        pts.push(pt122);
        pt123 = new BMap.Point(101.730439, 21.055576);
        pts.push(pt123);
        pt124 = new BMap.Point(101.969604, 21.31441);
        pts.push(pt124);
        pt125 = new BMap.Point(101.804028, 22.190972);
        pts.push(pt125);
        pt126 = new BMap.Point(102.53992, 22.53323);
        pts.push(pt126);
        pt127 = new BMap.Point(103.956512, 22.447745);
        pts.push(pt127);
        pt128 = new BMap.Point(105.465091, 23.130116);
        pts.push(pt128);
        pt129 = new BMap.Point(107.819945, 21.435041);
        pts.push(pt129);
        pt130 = new BMap.Point(108.408658, 20.588528);
        pts.push(pt130);
    
        pt131 = new BMap.Point(108.243082, 17.791978);
        pts.push(pt131);
        pt132 = new BMap.Point(110.101209, 14.556493);
        pts.push(pt132);
        pt133 = new BMap.Point(109.82525, 10.162358);
        pts.push(pt133);
        pt134 = new BMap.Point(108.151096, 6.074665);
        pts.push(pt134);
        pt135 = new BMap.Point(109.604482, 3.416913);
        pts.push(pt135);
        pt136 = new BMap.Point(113.136763, 3.712694);
        pts.push(pt136);
        pt137 = new BMap.Point(115.362836, 6.737258);
        pts.push(pt137);
        pt138 = new BMap.Point(117.404936, 9.505473);
        pts.push(pt138);
        pt139 = new BMap.Point(119.318255, 14.574413);
        pts.push(pt139);
        pt140 = new BMap.Point(120.164531, 19.12633);
        pts.push(pt140);
    
        pt141 = new BMap.Point(122.059452, 21.693198);
        pts.push(pt141);
        pt142 = new BMap.Point(122.813741, 24.686186);
        pts.push(pt142);
        pt143 = new BMap.Point(124.230333, 28.457139);
        pts.push(pt143);
        pt144 = new BMap.Point(124.855841, 32.721228);
        pts.push(pt144);
        pt145 = new BMap.Point(124.230333, 36.56674);
        pts.push(pt145);
        pt146 = new BMap.Point(124.487895, 39.59086);
        pts.push(pt146);
    
        return pts;
    }
    创建中国地图边界线

    2:添加以下js百度地图辅助类

    //此js用于辅助百度地图操作,主要判断坐标位置是否在某个圆、矩形之内还是之外 
    
    var BMapLib = window.BMapLib = BMapLib || {}; (function () {
        var a = 6370996.81;
        var b = BMapLib.GeoUtils = function () { };
        b.isPointInRect = function (f, g) {
            if (!(f instanceof BMap.Point) || !(g instanceof BMap.Bounds)) {
                return false
            }
            var e = g.getSouthWest();
            var h = g.getNorthEast();
            return (f.lng >= e.lng && f.lng <= h.lng && f.lat >= e.lat && f.lat <= h.lat)
        };
        b.isPointInCircle = function (e, h) {
            if (!(e instanceof BMap.Point) || !(h instanceof BMap.Circle)) {
                return false
            }
            var i = h.getCenter();
            var g = h.getRadius();
            var f = b.getDistance(e, i);
            if (f <= g) {
                return true
            } else {
                return false
            }
        };
        b.isPointOnPolyline = function (f, h) {
            if (!(f instanceof BMap.Point) || !(h instanceof BMap.Polyline)) {
                return false
            }
            var e = h.getBounds();
            if (!this.isPointInRect(f, e)) {
                return false
            }
            var m = h.getPath();
            for (var k = 0; k < m.length - 1; k++) {
                var l = m[k];
                var j = m[k + 1];
                if (f.lng >= Math.min(l.lng, j.lng) && f.lng <= Math.max(l.lng, j.lng) && f.lat >= Math.min(l.lat, j.lat) && f.lat <= Math.max(l.lat, j.lat)) {
                    var g = (l.lng - f.lng) * (j.lat - f.lat) - (j.lng - f.lng) * (l.lat - f.lat);
                    if (g < 2e-10 && g > -2e-10) {
                        return true
                    }
                }
            }
            return false
        };
        b.isPointInPolygon = function (o, l) {
            if (!(o instanceof BMap.Point) || !(l instanceof BMap.Polygon)) {
                return false
            }
            var k = l.getBounds();
            if (!this.isPointInRect(o, k)) {
                return false
            }
            var t = l.getPath();
            var h = t.length;
            var n = true;
            var j = 0;
            var g = 2e-10;
            var s, q;
            var e = o;
            s = t[0];
            for (var f = 1; f <= h; ++f) {
                if (e.equals(s)) {
                    return n
                }
                q = t[f % h];
                if (e.lat < Math.min(s.lat, q.lat) || e.lat > Math.max(s.lat, q.lat)) {
                    s = q;
                    continue
                }
                if (e.lat > Math.min(s.lat, q.lat) && e.lat < Math.max(s.lat, q.lat)) {
                    if (e.lng <= Math.max(s.lng, q.lng)) {
                        if (s.lat == q.lat && e.lng >= Math.min(s.lng, q.lng)) {
                            return n
                        }
                        if (s.lng == q.lng) {
                            if (s.lng == e.lng) {
                                return n
                            } else {
                                ++j
                            }
                        } else {
                            var r = (e.lat - s.lat) * (q.lng - s.lng) / (q.lat - s.lat) + s.lng;
                            if (Math.abs(e.lng - r) < g) {
                                return n
                            }
                            if (e.lng < r) {
                                ++j
                            }
                        }
                    }
                } else {
                    if (e.lat == q.lat && e.lng <= q.lng) {
                        var m = t[(f + 1) % h];
                        if (e.lat >= Math.min(s.lat, m.lat) && e.lat <= Math.max(s.lat, m.lat)) {
                            ++j
                        } else {
                            j += 2
                        }
                    }
                }
                s = q
            }
            if (j % 2 == 0) {
                return false
            } else {
                return true
            }
        };
        b.degreeToRad = function (e) {
            return Math.PI * e / 180
        };
        b.radToDegree = function (e) {
            return (180 * e) / Math.PI
        };
        function d(g, f, e) {
            if (f != null) {
                g = Math.max(g, f)
            }
            if (e != null) {
                g = Math.min(g, e)
            }
            return g
        }
        function c(g, f, e) {
            while (g > e) {
                g -= e - f
            }
            while (g < f) {
                g += e - f
            }
            return g
        }
        b.getDistance = function (j, h) {
            if (!(j instanceof BMap.Point) || !(h instanceof BMap.Point)) {
                return 0
            }
            j.lng = c(j.lng, -180, 180);
            j.lat = d(j.lat, -74, 74);
            h.lng = c(h.lng, -180, 180);
            h.lat = d(h.lat, -74, 74);
            var f, e, i, g;
            f = b.degreeToRad(j.lng);
            i = b.degreeToRad(j.lat);
            e = b.degreeToRad(h.lng);
            g = b.degreeToRad(h.lat);
            return a * Math.acos((Math.sin(i) * Math.sin(g) + Math.cos(i) * Math.cos(g) * Math.cos(e - f)))
        };
        b.getPolylineDistance = function (f) {
            if (f instanceof BMap.Polyline || f instanceof Array) {
                var l;
                if (f instanceof BMap.Polyline) {
                    l = f.getPath()
                } else {
                    l = f
                }
                if (l.length < 2) {
                    return 0
                }
                var j = 0;
                for (var h = 0; h < l.length - 1; h++) {
                    var k = l[h];
                    var g = l[h + 1];
                    var e = b.getDistance(k, g);
                    j += e
                }
                return j
            } else {
                return 0
            }
        };
        b.getPolygonArea = function (t) {
            if (!(t instanceof BMap.Polygon) && !(t instanceof Array)) {
                return 0
            }
            var R;
            if (t instanceof BMap.Polygon) {
                R = t.getPath()
            } else {
                R = t
            }
            if (R.length < 3) {
                return 0
            }
            var w = 0;
            var D = 0;
            var C = 0;
            var L = 0;
            var J = 0;
            var F = 0;
            var E = 0;
            var S = 0;
            var H = 0;
            var p = 0;
            var T = 0;
            var I = 0;
            var q = 0;
            var e = 0;
            var M = 0;
            var v = 0;
            var K = 0;
            var N = 0;
            var s = 0;
            var O = 0;
            var l = 0;
            var g = 0;
            var z = 0;
            var Q = 0;
            var G = 0;
            var j = 0;
            var A = 0;
            var o = 0;
            var m = 0;
            var y = 0;
            var x = 0;
            var h = 0;
            var k = 0;
            var f = 0;
            var n = a;
            var B = R.length;
            for (var P = 0; P < B; P++) {
                if (P == 0) {
                    D = R[B - 1].lng * Math.PI / 180;
                    C = R[B - 1].lat * Math.PI / 180;
                    L = R[0].lng * Math.PI / 180;
                    J = R[0].lat * Math.PI / 180;
                    F = R[1].lng * Math.PI / 180;
                    E = R[1].lat * Math.PI / 180
                } else {
                    if (P == B - 1) {
                        D = R[B - 2].lng * Math.PI / 180;
                        C = R[B - 2].lat * Math.PI / 180;
                        L = R[B - 1].lng * Math.PI / 180;
                        J = R[B - 1].lat * Math.PI / 180;
                        F = R[0].lng * Math.PI / 180;
                        E = R[0].lat * Math.PI / 180
                    } else {
                        D = R[P - 1].lng * Math.PI / 180;
                        C = R[P - 1].lat * Math.PI / 180;
                        L = R[P].lng * Math.PI / 180;
                        J = R[P].lat * Math.PI / 180;
                        F = R[P + 1].lng * Math.PI / 180;
                        E = R[P + 1].lat * Math.PI / 180
                    }
                }
                S = Math.cos(J) * Math.cos(L);
                H = Math.cos(J) * Math.sin(L);
                p = Math.sin(J);
                T = Math.cos(C) * Math.cos(D);
                I = Math.cos(C) * Math.sin(D);
                q = Math.sin(C);
                e = Math.cos(E) * Math.cos(F);
                M = Math.cos(E) * Math.sin(F);
                v = Math.sin(E);
                K = (S * S + H * H + p * p) / (S * T + H * I + p * q);
                N = (S * S + H * H + p * p) / (S * e + H * M + p * v);
                s = K * T - S;
                O = K * I - H;
                l = K * q - p;
                g = N * e - S;
                z = N * M - H;
                Q = N * v - p;
                m = (g * s + z * O + Q * l) / (Math.sqrt(g * g + z * z + Q * Q) * Math.sqrt(s * s + O * O + l * l));
                m = Math.acos(m);
                G = z * l - Q * O;
                j = 0 - (g * l - Q * s);
                A = g * O - z * s;
                if (S != 0) {
                    o = G / S
                } else {
                    if (H != 0) {
                        o = j / H
                    } else {
                        o = A / p
                    }
                }
                if (o > 0) {
                    y += m;
                    k++
                } else {
                    x += m;
                    h++
                }
            }
            var u, r;
            u = y + (2 * Math.PI * h - x);
            r = (2 * Math.PI * k - y) + x;
            if (y > x) {
                if ((u - (B - 2) * Math.PI) < 1) {
                    f = u
                } else {
                    f = r
                }
            } else {
                if ((r - (B - 2) * Math.PI) < 1) {
                    f = r
                } else {
                    f = u
                }
            }
            w = (f - (B - 2) * Math.PI) * n * n;
            return w
        }
    })();
    辅助地图操作类

    3:调用方法判断是否在中国境内

    //判断点在多边形内还是外
    function ptInPolygon(lng, lat) {
        var pts=CreateChinaMapLine();
        var ply = new BMap.Polygon(pts);
    
        var pt = new BMap.Point(lng, lat);
    
        var result = BMapLib.GeoUtils.isPointInPolygon(pt, ply);
        
        if (result == true) {
            alert("点在中国内");
        } else {
            alert("点在中国外")
        }
    }
    调用方法判断是否在中国境内

    4:扩展其它

    //点在矩形内
    function ptInRect() {
        var pt = new BMap.Point(116.404, 39.915);//测试点
    
        var pt1 = new BMap.Point(116.400, 39.910);//西南脚点
        var pt2 = new BMap.Point(116.410, 39.920);//东北脚点
        var bds = new BMap.Bounds(pt1, pt2); //测试Bounds对象
    
        var result = BMapLib.GeoUtils.isPointInRect(pt, bds);
        if (result == true) {
            alert("点在矩形内");
        } else {
            alert("点在矩形外")
        }
    
        //演示:将点与矩形添加到地图上
        map.clearOverlays();
        var mkr = new BMap.Marker(pt);
        var pts = [];
        //bds的四个脚点坐标
        var leftTop = new BMap.Point(pt1.lng, pt2.lat);
        var rightTop = new BMap.Point(pt2.lng, pt2.lat);
        var leftBottom = new BMap.Point(pt1.lng, pt1.lat);
        var rightBottom = new BMap.Point(pt2.lng, pt1.lat);
        pts.push(leftTop);
        pts.push(rightTop);
        pts.push(rightBottom);
        pts.push(leftBottom);
        var rect = new BMap.Polygon(pts);
        map.addOverlay(mkr);//添加测试点
        map.addOverlay(rect);//添加测试矩形    
    
    }
    
    //点在圆内
    function ptInCircle() {
        var pt = new BMap.Point(116.404, 39.915);//测试点
        var c = new BMap.Point(116.404, 39.915); //圆心 
        var circle = new BMap.Circle(c, 500);//测试圆
    
        var result = BMapLib.GeoUtils.isPointInCircle(pt, circle);
        if (result == true) {
            alert("点在圆形内");
        } else {
            alert("点在圆形外")
        }
    
        //演示:将点与圆形添加到地图上
        map.clearOverlays();
        var mkr = new BMap.Marker(pt);
        map.addOverlay(mkr);
        map.addOverlay(circle);
    }
    
    //计算长度,参数为折线
    function computeLenByPolyine() {
        var pts = [];
        var pt1 = new BMap.Point(116.400, 39.910);
        var pt2 = new BMap.Point(116.402, 39.912);
        var pt3 = new BMap.Point(116.403, 39.914);
        var pt4 = new BMap.Point(116.404, 39.917);
        var pt5 = new BMap.Point(116.406, 39.918);
    
        pts.push(pt1);
        pts.push(pt2);
        pts.push(pt3);
        pts.push(pt4);
        pts.push(pt5);
    
        var ply = new BMap.Polyline(pts);
        var dis = BMapLib.GeoUtils.getPolylineDistance(ply);
        alert("共" + dis.toFixed(2) + "米");
    
        //演示:将线添加到地图上
        map.clearOverlays();
        map.addOverlay(ply);
    }
    
    //计算长度,参数为点数组
    function computeLenByArray() {
        var pts = [];
        var pt1 = new BMap.Point(116.400, 39.910);
        var pt2 = new BMap.Point(116.402, 39.912);
        var pt3 = new BMap.Point(116.403, 39.914);
        var pt4 = new BMap.Point(116.404, 39.917);
        var pt5 = new BMap.Point(116.406, 39.918);
    
        pts.push(pt1);
        pts.push(pt2);
        pts.push(pt3);
        pts.push(pt4);
        pts.push(pt5);
    
        var dis = BMapLib.GeoUtils.getPolylineDistance(pts);
        alert("共" + dis.toFixed(2) + "米");
    
        //演示:将线添加到地图上
        var ply = new BMap.Polyline(pts, { strokeColor: "red", strokeStyle: "dashed" });
        map.clearOverlays();
        map.addOverlay(ply);
    }
    
    //计算面积,参数为多边形
    function computeAreaByPolygon() {
        var pts = [];
        var pt1 = new BMap.Point(116.395, 39.910);
        var pt2 = new BMap.Point(116.394, 39.918);
        var pt3 = new BMap.Point(116.396, 39.919);
        var pt4 = new BMap.Point(116.404, 39.920);
        var pt5 = new BMap.Point(116.406, 39.913);
    
        pts.push(pt1);
        pts.push(pt2);
        pts.push(pt3);
        pts.push(pt4);
        pts.push(pt5);
    
        var ply = new BMap.Polygon(pts);
        var area = BMapLib.GeoUtils.getPolygonArea(ply);
        alert("共" + area.toFixed(2) + "平方米");
    
        //演示:将面添加到地图上    
        map.clearOverlays();
        map.addOverlay(ply);
    }
    
    //计算面积,参数为数组
    function computeAreaByArray() {
        var pts = [];
        var pt1 = new BMap.Point(116.395, 39.910);
        var pt2 = new BMap.Point(116.394, 39.918);
        var pt3 = new BMap.Point(116.396, 39.919);
        var pt4 = new BMap.Point(116.404, 39.920);
        var pt5 = new BMap.Point(116.406, 39.913);
    
        pts.push(pt1);
        pts.push(pt2);
        pts.push(pt3);
        pts.push(pt4);
        pts.push(pt5);
    
        var area = BMapLib.GeoUtils.getPolygonArea(pts);
        alert("共" + area.toFixed(2) + "平方米");
    
        //演示:将面添加到地图上
        var ply = new BMap.Polygon(pts, { strokeColor: "red", strokeStyle: "dashed", fillColor: "gray" });
        map.clearOverlays();
        map.addOverlay(ply);
    }
    
    //点在折线上
    function ptOnPolyline() {
        var pts = [];
        var pt1 = new BMap.Point(116.395, 39.910);
        var pt2 = new BMap.Point(116.405, 39.920);
        var pt3 = new BMap.Point(116.410, 39.920);
    
        pts.push(pt1);
        pts.push(pt2);
        pts.push(pt3);
        var ply = new BMap.Polyline(pts);
    
        var pt = new BMap.Point(116.400, 39.915);
    
        var result = BMapLib.GeoUtils.isPointOnPolyline(pt, ply);
        if (result == true) {
            alert("点在折线上");
        } else {
            alert("点在折线外")
        }
    
        map.clearOverlays();
        var mkr = new BMap.Marker(pt);
        map.addOverlay(mkr);
        map.addOverlay(ply);
    }
    判断坐标相关其它扩展方法
  • 相关阅读:
    GIS的核心价值——服务
    Arcgis Add-In开发入门实例
    Arcgis for Androd API开发系列教程(一)——地图显示与GPS定位
    Spring
    字体大小对照换算表
    属性和字段的区别
    sqlDataAdapter和SqlCommand的区别
    C# 连接SQL Server数据库的几种方式--server+data source等方式
    c# using的作用
    random
  • 原文地址:https://www.cnblogs.com/fj99/p/5685116.html
Copyright © 2011-2022 走看看