我是stackoverflow的新手;注意到它对很多人有帮助,所以我想我自己试一试。
我正在为Android开展一个项目。
它的要点是这样的:用户产生一个地图,其中包含从设定半径随机生成的标记,当前位置是原点。然后用户必须"收集"每个虚拟对象,此时游戏将结束并返回主菜单。非常简单的概念。
我的问题:如何根据用户的当前位置删除标记?换句话说,我如何让标记对用户的位置作出反应,以便在用户离他们一定距离时分别从地图中删除标记?我已经在网上找了一些关于计算距离的网站,但没有关于根据距离去除标记的事情。
感谢任何帮助。此外,对我的礼仪的批评也被接受;我不熟悉如何在这里提问。
感谢。
答案 0 :(得分:0)
您应该提供您尝试寻求帮助的内容。你有没有在地图上显示标记?
您需要注册位置更新,以使您的应用了解位置更改。详情:http://developer.android.com/training/location/receive-location-updates.html
每次提供位置更新时,都会触发一个名为onLocationChanged(Location userLocation)的方法。您应该将此信息用于距离计算。
遍历您的标记列表并检查每个标记的距离。
这是一种计算鸟瞰两个位置之间距离的方法:
crsr.execute("SELECT DoubleField, CStr(SingleField) AS foo FROM tblJunk WHERE ID=1")
row = crsr.fetchone()
print(row)
# prints: (12345678.9, u'1.234568E+07')
print(float(row[1]))
# prints: 12345680.0
您的标记对象有remove()方法。删除那些离用户当前位置更近的那些。