http://econym.org.uk/gmap/example_eshapes.htm有一个关于如何平铺六边形的Google Maps API v2示例,虽然实现可以很大程度地缩放:它有一个中心六边形,然后在适当的方向上与它相邻的六个六边形,然后(在准递归中)与其中一个相邻的三个六边形与原六边形相邻的六边形.它有一个漂亮的边框与透明填充.
我怎样才能创建一个类似的效果,但最好是使用平铺,这样我就可以指定(没有递归的堆)我想要在原点的东边有一个六六边形的六边形和四边六边形从东边的六个六边形到六边形的六边形到东?
我正在寻找基于坐标的东西,最好是简单的.我已经查看了http://www.rootmetrics.com/check-coverage/的源代码并且它可以工作,但代码与它们的特定页面,标记等相关联,因此模仿它们的代码需要一些解决.
最佳答案
以下示例演示如何渲染水平六边形网格:
function initialize() {
var mapOptions = {
zoom: 7,mapTypeId: google.maps.MapTypeId.TERRAIN
};
var map = new google.maps.Map(document.getElementById('map-canvas'),mapOptions);
var startPosition = new google.maps.LatLng(33.748589,-84.390392); //Atlanta,GA,USA
var radius = 40 * 1000; //radius in meters
drawHorizontalHexagonGrid(map,startPosition,radius,6);
map.setCenter(startPosition);
}
function drawHorizontalHexagonGrid(map,count){
var curPos = startPosition;
var width = radius * 2 * Math.sqrt(3)/2 ;
for(var i = 0;i < count; i++){
drawHorizontalHexagon(map,curPos,radius);
curPos = google.maps.geometry.spherical.computeOffset(curPos,width,90);
}
}
function drawHorizontalHexagon(map,position,radius){
var coordinates = [];
for(var angle= 0;angle < 360; angle+=60) {
coordinates.push(google.maps.geometry.spherical.computeOffset(position,angle));
}
// Construct the polygon.
var polygon = new google.maps.polygon({
paths: coordinates,strokeColor: '#FF0000',strokeOpacity: 0.8,strokeWeight: 2,fillColor: '#FF0000',fillOpacity: 0.35
});
polygon.setMap(map);
map.setCenter(position);
}
google.maps.event.addDomListener(window,'load',initialize);
html,body,#map-canvas {
height: 100%;
margin: 0px;
padding: 0px;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。