Javascript 合并json map api v3中的多个多边形

Javascript 合并json map api v3中的多个多边形,javascript,arrays,json,google-maps,google-maps-api-3,Javascript,Arrays,Json,Google Maps,Google Maps Api 3,我试图找到合并多个多边形(>100)的方法,以便只有一个多边形具有合并多边形的边界,而不是所有“小”多边形的边界 我从JSON文件导入坐标,并使用以下代码渲染每个多边形: var thisUcVar<?php echo $nb_fichier ?>; var thisAgencyVar<?php echo $nb_fichier ?>; var thisListAgencyVar;

我试图找到合并多个多边形(>100)的方法,以便只有一个多边形具有合并多边形的边界,而不是所有“小”多边形的边界

我从JSON文件导入坐标,并使用以下代码渲染每个多边形:

            var thisUcVar<?php echo $nb_fichier ?>;
            var thisAgencyVar<?php echo $nb_fichier ?>;
            var thisListAgencyVar;
            var thisUcColor;
            $.getJSON("<?php echo("test/". $fichier); ?>", function(json1) {
                var i=0;
                var coordUc = [];
                var thisUc = json1;
                thisUcVar<?php echo $nb_fichier ?> = thisUc[0].name;
                thisAgencyVar<?php echo $nb_fichier ?> = thisUc[0].agency;
                thisUcColor = thisUc[0].color;
                $.each(json1, function(key, data){
                    i = 0;              
                    $.each(data.coordinates, function(key, data){              
                        coordUc.length = 0;
                        $.each(data, function(key, data){
                            var innerCoordUc = {"lat":  data[1], "lng": data[0] };
                            coordUc[i] = innerCoordUc;
                            i++;
                        });
                        var uc = new google.maps.Polygon({
                            title: i,
                            strokeWeight: 1,
                            fillColor: thisUcColor,
                            paths: coordUc,
                            zIndex: 10
                        });             
                        uc.setMap(map);
                        map.addListener('zoom_changed',function(){
                            if(map.getZoom()>=10){
                                uc.set('zIndex', 90);
                            }else{
                                uc.set('zIndex', 10);
                            }
                        });
                        uc.addListener('click', function() {
                            $(".layer").html("<h1>" + thisUcVar<?php echo $nb_fichier ?> + "</h1><ul></ul>");
                            $.each(thisAgencyVar<?php echo $nb_fichier ?>, function(key, data){
                                listThisAgencyVar = data.name;
                                $(".layer").append("<li>" + uc.title + listThisAgencyVar + "</li>");
                            });
                            if(map.getZoom() >= 10){
                                map.setZoom(11);
                                map.setCenter(uc.getBounds().getCenter());                                  
                            } 
                        });

                        if (!google.maps.Polygon.prototype.getBounds) { 
                            google.maps.Polygon.prototype.getBounds=function(){
                                var bounds = new google.maps.LatLngBounds()
                                this.getPath().forEach(function(element,index){bounds.extend(element)})
                                return bounds;
                            }        
                        }
                    }); 
                });//fin de boucle json1        
            });
var-thisUcVar;
变种thisAgencyVar;
var thisListAgencyVar;
变色变种;
$.getJSON(“),函数(json1){
var i=0;
var-coordUc=[];
var thisUc=json1;
thisUcVar=thisUc[0]。名称;
thisAgencyVar=thisUc[0]。代理;
thisUcColor=thisUc[0]。颜色;
$.each(json1,函数(键,数据){
i=0;
$.each(数据.坐标,函数(键,数据){
coordUc.length=0;
$。每个(数据、功能(键、数据){
var innerCoordUc={“lat”:数据[1],“lng”:数据[0]};
coordUc[i]=内部coordUc;
i++;
});
var uc=新的google.maps.Polygon({
标题:我,,
冲程重量:1,
fillColor:thisUcColor,
路径:coordUc,
zIndex:10
});             
uc.setMap(地图);
map.addListener('zoom_changed',function(){
如果(map.getZoom()>=10){
uc.set('zIndex',90);
}否则{
uc.set('zIndex',10);
}
});
uc.addListener('单击',函数()){
$(“.layer”).html(“+thisUcVar+”
    ”); $.each(thisAgencyVar,函数(键,数据){ listThisAgencyVar=data.name; $(“.layer”).append(“
  • ”+uc.title+listThisAgencyVar+”
  • ”); }); 如果(map.getZoom()>=10){ map.setZoom(11); map.setCenter(uc.getBounds().getCenter()); } }); 如果(!google.maps.Polygon.prototype.getBounds){ google.maps.Polygon.prototype.getBounds=function(){ var bounds=new google.maps.LatLngBounds() this.getPath().forEach(函数(元素,索引){bounds.extend(元素)}) 返回边界; } } }); });//fin de boucle json1 });
    结果如下图所示:

    这里是我用来生成每个多边形的一个JSON文件。

    我到处搜索,但没有找到任何方法将多个多边形合并到一个大多边形中


    非常感谢

    一个可能有效的解决方案是使用。特别是,它有一种方法可以完全满足您的需要(将多个多边形合并为一个对应于多边形并集的多边形)

    但是,此库使用标准格式,因此您需要将数据转换为此标准

    如果您可以使用此格式,它还将帮助您使用数据层和Google Maps API中的方法在地图上显示数据