Javascript 合并json map api v3中的多个多边形
我试图找到合并多个多边形(>100)的方法,以便只有一个多边形具有合并多边形的边界,而不是所有“小”多边形的边界 我从JSON文件导入坐标,并使用以下代码渲染每个多边形: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;
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中的方法在地图上显示数据