很长一段时间以来,我一直在尝试将“游戏地图”添加到Google地图中。我的目标是让地图能够缩放等(默认谷歌地图功能已经完成)并在其上放置标记,显示游戏中的对象。这就是我的问题所在。
游戏(ArmA)有一个可变坐标系统,它完全取决于你正在玩的“世界”。让我们说我的世界有10200乘10200个单位可以浮动,所以5212.123是可能的。
我想在地图上显示的所有对象都存储在一个JS数组中,如下所示:
["class_name",5200,4800]
第一个描述类名或让我们假装对象的名称,另外两个描述X和Y值。我试着找到某种方式撞击墙壁,试图找到一些方法,这使我能够在基本缩放级别上定义像素坐标,然后在放大/缩小时改变...但是这没有成功/或者说我没有找到任何事情都可以。
现在我尝试将坐标转换为Lat / Long,但我认为Lat / Long不是常数,因为它仍然不是很准确:我尝试将170 lat单位除以我的10200游戏单位,它带来了一些不错的结果。 ..但如上所述:不是很准确。
有没有什么方法可以做到这一点“智能,聪明或顺畅”?或谷歌地图不是这个的工具?
编辑:
以下是我目前的做法......
// The game caculates the Y axis from the bottom up, so I turn it around by
// subtracting the coord of the object from the highest possible value
$worldspaceCoords[0] = $worldspaceCoords[0];
$worldspaceCoords[1] = 10200 - $worldspaceCoords[1];
// My lat ranges from -85 to +85 = 170 in total, same goes for the long
// I use 9100 and 9700 because I have calculated offsets in my map
$latCoF = 170 / 9100;
$lonCoF = 360 / 9700;
// Now I calculate lat and long by starting at the min value and going to the max
$worldspaceLatLon['lat'] = 85 - $worldspaceCoords[1] * $latCoF;
$worldspaceLatLon['lon'] = -180 + $worldspaceCoords[0] * $lonCoF;
我通过PHP获取对象并将它们输出到一个部分,然后将它们存储在数组中,稍后由标记创建器循环解析。
这是他们应该看的样子(旧地图版本,而不是谷歌地图) (http://i.imgur.com/8clKv4B.jpg)
这就是我之前发布的代码(谷歌地图)到目前为止的结果 (http://i.imgur.com/ozNw54K.jpg)