所以我正在使用Java语言开发最终项目,这个项目有一个服务器端(由我负责)和一个GUI客户端(由其他人负责)。
作为服务器,我经常从Android客户端获得GPS协调(作为纬度经度),我需要在预先分配的网格上回复它们的等效位置。
网格由GUI客户端发送给我的4个LatLng坐标和要划分的网格线数量设置。例如。我得到(35.000,35.000),(35.000,36.000),(36.000,36.000),(36.000,35.000)和40x40。
我使用的当前方法是分别计算区域纬度距离和经度距离的弧度距离,然后将其除以40(如给出的例子),每个商是我的&# 34;点击",我稍后使用的单个距离单位。
当我收到一个新的坐标时,我将它除以我的"点击"并且执行Math.floor,此操作的商是网格上的位置。 但有些事情是错的,我的计算显然是不正确的,因为GUI客户端不同意我(通常是1个网格北/南和1个网格西/东,他只是采取地图(例如google-map)并将其作为图片进行操作简单地拆分一个矩形区域。 我究竟做错了什么?是否有更好的方法来对该设置给出的区域进行离散化?
我已经检查过的事情:1。这不是某种浮动下溢,我使用BigDecimal和SimpleLatLng。
编辑2:问题似乎已经解决,问题是首先没有得到正确的方位,只是假设网格是北边界,附上了正确的代码:
答案 0 :(得分:0)
我在探索和玩代码后设法回答了自己。 这是我们的项目代码中使用的此解决方案的最终实现。 您可以自由使用它,希望它将来会帮助其他人:
if (firstenemyattack > firstdefense) {
int firstenemyhitpointattack = (int) Math.ceil(Math.random()
* firstenemyhitpoints);
// Presumably, firstbattlehealth -= firstenemyhitpointattack here?
System.out.println("The enemy did " + firstenemyhitpointattack
+ " damage to you. You have " + firstbattlehealth
+ " health remaining.");
} else { // <-- An "else" block, firstenemyattack <= firstdefense
System.out.println("Enemy attack missed!");
}