- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为基于 Google map v3 的游戏制作六边形网格,但遇到了问题。
在我单击一个六边形后,显示不同的值,与所有六边形内部的标记不同。
正确的值显示在四分之一六边形的左下角。coord_slug 的值是根据坐标 lat、lng 制定的。
我必须做什么才能使六边形和标记值相同?这样上六边形为 55.3,14.8,下六边形为 55.25,1485。
我需要在游戏中使用这些值来从数据库下载日期。
负责显示值的部分:
function set_window(event) {
// Set Parameters
var lat = event.latLng.lat();
var lng = event.latLng.lng();
var coord_slug = (Math.round(lat * 20) / 20) + ',' + (Math.round(lng * 20) / 20);
alert(coord_slug);
}
脚本的工作部分在这里:
function round_down(n) {
if (n > 0) {
return Math.ceil(n / 0.05) * 0.05;
} else {
return 0;
}
}
var map;
var pointCount = 0;
var locations = [];
var gridWidth = 3660; // hex tile size in meters
var bounds;
var places = [
[55.3, 14.8],
[55.25, 14.85],
]
var SQRT3 = 1.73205080756887729352744634150587236;
$(document).ready(function(){
bounds = new google.maps.LatLngBounds();
map = new google.maps.Map(document.getElementById("map_canvas"), {center: {lat: 55.27, lng: 14.8}, zoom: 10});
// Adding a marker just so we can visualize where the actual data points are.
// In the end, we want to see the hex tile that contain them
places.forEach(function(place, p){
latlng = new google.maps.LatLng({lat: place[0], lng: place[1]});
marker = new google.maps.Marker({
position: latlng,
map: map})
marker.addListener('click', set_window);
// Fitting to bounds so the map is zoomed to the right place
bounds.extend(latlng);
});
// Now, we draw our hexagons! (or try to)
locations = makeBins(places);
locations.forEach(function(place, p){
drawHorizontalHexagon(map, place, gridWidth);
})
});
function drawHorizontalHexagon(map, position, radius){
var coordinates = [];
for(var angle= 0;angle < 360; angle+=60) {
coordinates.push(google.maps.geometry.spherical.computeOffset(position, radius, angle));
}
// Construct the polygon.
var polygon = new google.maps.Polygon({
paths: coordinates,
position: position,
strokeColor: '#FF0000',
strokeOpacity: 0.8,
strokeWeight: 2,
fillColor: '#FF0000',
fillOpacity: 0.35,
geodesic: true
});
polygon.setMap(map);
polygon.addListener('click', set_window);
}
// Below is my attempt at porting binner.py to Javascript.
// Source: https://github.com/coryfoo/hexbins/blob/master/hexbin/binner.py
function distance(x1, y1, x2, y2){
console.log(x1, y1, x2, y2);
result = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
console.log("Distance: ", result);
return
}
function nearestCenterPoint(value, scale){
div = value / (scale/2);
console.log("div", div);
mod = value % (scale/2);
console.log("mod", mod);
if(div % 2 == 1){
increment = 1;
} else{
increment = 0;
}
rounded = scale / 2 * (div + increment);
if(div % 2 === 0){
increment = 1;
} else{
increment = 0;
}
rounded_scaled = scale / 2 * (div + increment);
result = [rounded, rounded_scaled]
console.log("nearest centerpoint to", value, result);
return result;
}
function makeBins(data){
bins = [];
data.forEach(function(place, p){
x = place[0];
y = place[1];
console.log("Original location:", x, y);
px_nearest = nearestCenterPoint(x, gridWidth);
py_nearest = nearestCenterPoint(y, gridWidth * SQRT3);
z1 = distance(x, y, px_nearest[0], py_nearest[0]);
z2 = distance(x, y, px_nearest[1], py_nearest[1]);
if(z1 > z2){
bin = new google.maps.LatLng({lat: px_nearest[0], lng: py_nearest[0]});
console.log("Final location:", px_nearest[0], py_nearest[0]);
} else {
bin = new google.maps.LatLng({lat: px_nearest[1], lng: py_nearest[1]});
console.log("Final location:", px_nearest[1], py_nearest[1]);
}
bins.push(bin);
})
return bins;
}
function set_window(event) {
// Set Parameters
var lat = event.latLng.lat();
var lng = event.latLng.lng();
var coord_slug = (Math.round(lat * 20) / 20) + ',' + (Math.round(lng * 20) / 20);
alert(coord_slug);
}
<html>
<head>
<script data-require="jquery@*" data-semver="2.2.0" src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<script data-require="bootstrap@*" data-semver="3.3.6" src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<link data-require="bootstrap-css@3.3.6" data-semver="3.3.6" rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.css" />
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
<script src="https://maps.googleapis.com/maps/api/js?libraries=geometry"></script>
</head>
<body>
<div id="map_canvas" style="width:100%; height:80vh;">
</div>
</body>
</html>
最佳答案
您正在为多边形设置一个 position
属性,这似乎就是您想要显示的内容...
所以你可以替换以下内容
polygon.addListener('click', set_window);
通过这个:
polygon.addListener('click', function() {
var polyPosition = this.position.lat() + ', ' + this.position.lng();
alert(polyPosition);
});
关于javascript - 谷歌地图 V3 : Hexagon grid - Error with setWindow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48840255/
我正在通读六边形架构,不知何故我理解了这个概念,但我很想知道为什么它被称为Hexagonal。 最佳答案 六边形架构的名称来源于 Alistair Cockburn 绘制模式图的方式。它与实际代码无关
我有一个像图片中那样的六边形网格,我试图找到最简单的方法(可能是一个公式)来计算这个网格内两个六边形之间的距离。当然,我的网格的大小比这大,但是当我们计算规则网格(具有水平轴和垂直轴)中两个节点之间的
我想在一个球体上制作一个基于瓷砖的世界。我想使用六边形瓷砖,但据我所知,你也需要在那里有五边形以使其适合。 所以,我的问题是,是否可以在不使用五边形的情况下在球体上制作六边形网格?六边形不一定是正六边
我想要做的是找出六角网格上两点之间有多少个六边形。我曾尝试在线搜索公式,但找不到与我使用的十六进制网格类型相匹配的公式。 六边形网格布局如下,具有相同的坐标系:http://www.gamedev.n
我已经关注了 build_and_run_inception_hexagon.sh并生成了 hexagon_graph_execution 可执行文件。现在,我不想使用真实设备,而是想使用 SDK 3
This是(几乎)我想要创建的: HTML CSS .hexagon1 { overflow: hidden; visibility: hidden;
我正在生成一个六边形网格并且能够这样做但是当我将 MouseListener 添加到各个六边形时(当它们被创建时)它几乎就像它们在某物后面一样因为悬停/点击六边形会不要为此注册或做任何事情。我希望最终
我的六边形没有显示在 imageView 的中心,如何解决这个问题?这是我的代码。 func roundedPolygonPath(rect: CGRect, lineWidth: CGFloat,
我想在我的页面中显示如下所示的六边形进度条。 每一边代表一些数据 A。在每一边悬停时,我想显示一个工具提示,说“A 已完成”。我怎样才能做到这一点? 我尝试了 SVG 和 hexagonprogres
我正在为基于 Google map v3 的游戏制作六边形网格,但遇到了问题。 在我单击一个六边形后,显示不同的值,与所有六边形内部的标记不同。 正确的值显示在四分之一六边形的左下角。coord_sl
我使用 Hexagon-SDK 3.0 为 HVX DSP 架构编译示例应用程序。有许多与 Hexagon-LLVM 相关的工具可用于使用位于以下位置的文件夹: ~/Qualcomm/HEXAGON_
我想将 h3 java 绑定(bind)库集成到我的 android 应用程序中,但出现以下异常: java.lang.UnsatisfiedLinkError: 在/android-armv7l/l
我找不到为 .net 创建六边形 map 的 2D 游戏引擎。我能找到的最好的是 Xconq ( http://sourceforge.net/projects/xconq/ ) 和 pygame。有
这个问题在这里已经有了答案: Is it a good idea to typedef pointers? (15 个答案) 关闭 6 年前。 我在头文件中有这一行: typedef struct
我使用预训练的 mobilenet 模型构建了 Tensorflow Lite 演示相机应用程序,如 https://www.tensorflow.org/lite/convert/cmdline_e
我正在使用以下工具在六边形模拟器上分析 c 代码: Qualcomm/Hexagon_SDK/3.5.3/tools/HEXAGON_Tools/8.3.07/Tools/bin/hexagon-si
我昨天参加了一个关于扩展 Rails 的聚会,其中一个主题是 Hexagonal Rails。然而,我只做了一年的 Rails,对 MVC 结构非常满意(也许太舒服了),所以我不太了解适配器和消息队列
我想用 Swift 以编程方式创建 Hexagon UIButton。我有六边形图像,你可以看到绿色图片。边缘是透明的,所以你不应该点击那个区域。通过使用带有“自定义”选项的默认 UIButton,这
我已经使用 hexagon-sim、android 和 hvx 成功构建并执行了计算器应用程序。但是,在我的 Open-Q 820 开发板 上重现相同的 make 流程并不能成功执行其他应用程序。 例
我正在尝试在球体上构建六边形/测地线网格。出于我的目的,我只关注北极。到目前为止,我已经成功地使用 stripy 包构建了一个基于二十面体的三角形网格。 stripy 包允许我通过二分法细化网格:每条
我是一名优秀的程序员,十分优秀!