我需要做一些类似的事情,再加上一些其他的调整。我想分享我的黑客行为,以防它帮助其他人......
首先是html:
<div id="geo_outer"><div id="<?php $inner ?>"></div></div>
#geo_outer 是裁剪/构图实际 geochart 容器的容器。
geochart 容器最初被称为“geo_inner”,但我决定选择澳大利亚和新西兰 (ANZ) 的地图和仅澳大利亚 (AUS) 的地图,具体取决于新西兰是否在数据库的结果集中。
为了放大地图并最大化geo_outer 的可用空间,我只是将内部div 的尺寸增加到大于#geo_outer 的尺寸并将其四处移动,直到所需区域在#geo_outer 中垂直和水平居中。*默认情况下,谷歌的图像试图填充其容器(内部)的尺寸——这意味着我不需要在 javascript 选项中摆弄 geochart 的宽度/高度。
#geo_outer {width:600px;height:490px;overflow:hidden;}
#geo_innerAUS {
width:1100px;
height:1048px;
margin-top:-202px;
margin-left:-235px;
}
#geo_innerANZ {
width:850px;
height:748px;
margin-top:-112px;
margin-left:-205px;
}
这提供了更好的视觉效果,但我仍然不想看到北部和东北部所有那些不必要的岛屿。所以,剪辑路径来救援。现在我不擅长排列点,所以我开始通过浏览器开发工具突出显示内部 div 的简单方法,屏幕截图,并将其放入http://bennettfeely.com/clippy/。我可以粗略地选择我需要什么样的多边形并拖动点直到一切正确。(一旦我将多边形点应用于我的页面,我确实必须做一些小的调整。)
这是添加到各个 div 的 css:
澳大利亚:-webkit-clip-path:polygon(58% 21%, 71% 41%, 75% 66%, 22% 66%, 22% 24%);
clip-path:polygon(58% 21%, 71% 41%, 75% 66%, 22% 66%, 22% 24%);
澳新银行:-webkit-clip-path:polygon(60% 18%, 97% 56%, 74% 80%, 26% 80%, 26% 22%);
clip-path:polygon(60% 18%, 97% 56%, 74% 80%, 26% 80%, 26% 22%);
如果您使用 background-color:red,您可以通过浏览器开发工具轻松微调多边形;在内部的第一个孩子(div)上。
最后,如果要包含图例,请确保不要从底部修剪太多。我真的不得不去挖掘 DOM 才能找到那个小流氓。这是我用来将它移到视图中的css:
#geo_innerAUS > div > div:nth-child(1) > div > svg > g > g:nth-child(3){transform:translate(350px,-350px);}
#geo_innerANZ > div > div:nth-child(1) > div > svg > g > g:nth-child(3){transform:translate(275px,-140px);}
ps 这是我在关闭正文之前放入的 javascript:
function drawGeoChart(){
var data = google.visualization.arrayToDataTable([
<?php echo $geo_jsdata; ?>
]);
var options={
region:'AU',
displayMode:'regions',
colorAxis:{colors: ['red','yellow','green']},
resolution:'provinces'
};
var chart=new google.visualization.GeoChart($('#geo_outer>div:first-child')[0]);
chart.draw(data,options);
}
google.charts.load("current",{packages:["geochart"]});
google.charts.setOnLoadCallback(drawGeoChart);
这在我的手机和笔记本电脑上完美运行。我怀疑大多数设备的问题都很小,因为我的容器的尺寸以像素为单位,并且剪辑路径都是百分比。当我放大和缩小浏览器时,一切都很好。