如何使用javascript根据一组纬度和经度值计算面积?

如何使用javascript根据一组纬度和经度值计算面积?,javascript,google-maps,google-maps-api-3,gps,Javascript,Google Maps,Google Maps Api 3,Gps,如何使用javascript根据一组纬度和经度值计算面积 我从自己的数据库中提取了一组纬度和经度值。它们看起来是这样的: // Define the LatLng coordinates for the polygon's path. var fizuliCoords = [ {lng:47.1648244,lat:39.6834661}, {lng:47.1653823,lat:39.6906634}, ........there are 400-1200 lines...I only l

如何使用javascript根据一组纬度和经度值计算面积

我从自己的数据库中提取了一组纬度和经度值。它们看起来是这样的:

 // Define the LatLng coordinates for the polygon's path.
 var fizuliCoords = [
{lng:47.1648244,lat:39.6834661},
{lng:47.1653823,lat:39.6906634},
........there are 400-1200 lines...I only list 2
];
var bakuCoords = [
{lng:47.1648244,lat:39.6834661},
{lng:47.1653823,lat:39.6906634},
........there are 400-1200 lines...I only list 2
];
有69个不同的行政区

我的项目是:

  • 列出多边形
  • 根据lat/long值集自动计算面积 我是个十足的新手,所以请耐心点:) 我可以从一个名为Expert GPS的程序中提取平方公里的面积,对于已知的SHPAE没有问题,但我需要一个自动脚本。 谢谢 ..... 我的道歉,第一次:)
  • 
    ttttt
    html,正文{
    身高:100%;
    保证金:0;
    填充:0;
    }
    /*#map是将map放置在html页面上的div*/
    #地图{
    身高:100%;
    }
    /*#地图*的结尾
    //此示例创建一个表示shusha区域的简单多边形。
    //initMap函数将地图放置在页面上
    函数initMap(){
    var map=new google.maps.map(document.getElementById('map'){
    缩放:8,
    中心:{lat:40.352310,lng:47.999462},
    mapTypeId:google.maps.mapTypeId.TERRAIN
    });
    //结束oof initMap函数
    //------------------------------------------------------------------
    //定义Shusha多边形路径的板条坐标。
    var shushaCoords=[
    {lng:46.5852069,lat:39.7918524},
    {lng:46.5810012,lat:39.789016},
    {lng:46.5800569,lat:39.7812995},
    {lng:46.5741348,lat:39.7757586},
    {lng:46.5720748,lat:39.7722619},
    {lng:46.571817,lat:39.763026}
    ];
    //定义Khojavend多边形路径的板条坐标。
    var khojavendCoords=[
    {lng:46.6707802,lat:39.5735368},
    {lng:46.6646003,lat:39.5704934},
    {lng:46.6628837,lat:39.5675823}
    ];
    //定义Zangilan多边形路径的板条坐标。
    变量xocaliCoords=[
    {lng:46.6195822,lat:39.233882},
    {lng:46.6161489,lat:39.232918},
    {lng:46.6094971,lat:39.2322199},
    {lng:46.6076088,lat:39.2318542},
    {lng:46.6009998,lat:39.229494}
    ];
    **以此类推,还有69个区域的多边形**
    **//构造xocali多边形**
    var xocali=new google.maps.Polygon({
    地图:地图,
    路径:xocaliCoords,
    strokeColor:“#000000”,
    笔划不透明度:0.5,
    冲程重量:2,
    填充颜色:“#00CCFF”,
    填充不透明度:0.15
    });
    **//还有68个**
    //为julfa mouseover/mouseout事件添加侦听器。
    google.maps.event.addListener(julfa,'mouseover',function(){
    setOptions({fillColor:#00FF00“});
    }); 
    **//在这里,我想添加一个弹出窗口,其中面积将计算**
    google.maps.event.addListener(julfa,'mouseout',function()){
    setOptions({fillColor:#00CCFF“});
    });  
    //然后又有68组听众
    }
    
    我这里有三个问题: 1.能够根据每个多边形的lat lng值构建计算面积的公式 2.在弹出窗口中完成此操作
    3.可以使用外部.js文件谷歌地图Javascript API包含方法
    computeArea

    计算区域(路径:数组| MVCArray,半径?:编号)

    返回值:number

    返回闭合路径的区域。计算的面积使用与半径相同的单位。半径默认为以米为单位的地球半径,在这种情况下,面积以平方米为单位

    我的建议是制作一个子程序,将多边形添加到地图中,并使用mouseover/mouseout/click侦听器完成:

    function addPolygon(points, name, bounds, map) {
        var path = [];
        var polybounds = new google.maps.LatLngBounds();
        for (var i = 0; i < points.length; i++) {
            path.push(new google.maps.LatLng(points[i].lat, points[i].lng));
            bounds.extend(path[path.length - 1]);
            polybounds.extend(path[path.length - 1]);
            var m = new google.maps.Marker({
                position: path[path.length - 1],
                // map: map,
                title: name + i + " " + path[path.length - 1].toUrlValue(6),
                icon: {
                    url: "https://maps.gstatic.com/intl/en_us/mapfiles/markers2/measle_blue.png",
                    size: new google.maps.Size(7, 7),
                    anchor: new google.maps.Point(3.5, 3.5)
                }
            });
        }
        var polygon = new google.maps.Polygon({
            paths: path,
            strokeColor: '#000000',
            strokeOpacity: 0.5,
            strokeWeight: 2,
            fillColor: '#00CCFF',
            fillOpacity: 0.15,
            map: map,
            bounds: polybounds
        });
        polygons.push(polygon);
        google.maps.event.addListener(polygon, 'click', function (evt) {
            infowindow.setContent(name + " area: " + google.maps.geometry.spherical.computeArea(polygon.getPath()).toFixed(2) + " square meters");
            infowindow.setPosition(evt.latLng);
            infowindow.open(map);
        });
        google.maps.event.addListener(polygon, 'mouseover', function () {
            this.setOptions({
                fillColor: "#00FF00"
            });
        });
        google.maps.event.addListener(polygon, 'mouseout', function () {
            this.setOptions({
                fillColor: "#00CCFF"
            });
        });
    }
    

    谷歌地图Javascript API包含方法
    computeArea

    计算区域(路径:数组| MVCArray,半径?:编号)

    返回值:number

    返回闭合路径的区域。计算的面积使用与半径相同的单位。半径默认为以米为单位的地球半径,在这种情况下,面积以平方米为单位

    我的建议是制作一个子程序,将多边形添加到地图中,并使用mouseover/mouseout/click侦听器完成:

    function addPolygon(points, name, bounds, map) {
        var path = [];
        var polybounds = new google.maps.LatLngBounds();
        for (var i = 0; i < points.length; i++) {
            path.push(new google.maps.LatLng(points[i].lat, points[i].lng));
            bounds.extend(path[path.length - 1]);
            polybounds.extend(path[path.length - 1]);
            var m = new google.maps.Marker({
                position: path[path.length - 1],
                // map: map,
                title: name + i + " " + path[path.length - 1].toUrlValue(6),
                icon: {
                    url: "https://maps.gstatic.com/intl/en_us/mapfiles/markers2/measle_blue.png",
                    size: new google.maps.Size(7, 7),
                    anchor: new google.maps.Point(3.5, 3.5)
                }
            });
        }
        var polygon = new google.maps.Polygon({
            paths: path,
            strokeColor: '#000000',
            strokeOpacity: 0.5,
            strokeWeight: 2,
            fillColor: '#00CCFF',
            fillOpacity: 0.15,
            map: map,
            bounds: polybounds
        });
        polygons.push(polygon);
        google.maps.event.addListener(polygon, 'click', function (evt) {
            infowindow.setContent(name + " area: " + google.maps.geometry.spherical.computeArea(polygon.getPath()).toFixed(2) + " square meters");
            infowindow.setPosition(evt.latLng);
            infowindow.open(map);
        });
        google.maps.event.addListener(polygon, 'mouseover', function () {
            this.setOptions({
                fillColor: "#00FF00"
            });
        });
        google.maps.event.addListener(polygon, 'mouseout', function () {
            this.setOptions({
                fillColor: "#00CCFF"
            });
        });
    }
    
    
    
    试试这些

    函数GetArea(多边形){
    常量长度=多边形长度;
    设和=0;
    对于(设i=0;i试试这些

    函数GetArea(多边形){
    常量长度=多边形长度;
    设和=0;
    对于(设i=0;i