Php 谷歌地图或sql来阻止一个标记插入到另一个标记的3英里范围内

Php 谷歌地图或sql来阻止一个标记插入到另一个标记的3英里范围内,php,sql,google-maps,Php,Sql,Google Maps,我创建了一个php页面,其中包含一个v3谷歌地图和几个long和lat字段。其概念是用户为其事件添加一个标记,该标记填充要存储在M$-SQL 2008 R2数据库中的long和lat字段 我现在需要的是,web应用程序不允许在DB中任何其他long/lat的3英里范围内插入新的事件标记(用户看不到任何其他标记!)。理想情况下,这应该在他们尝试设置标记时发生,但在按下submit按钮并尝试填充DB时可能发生 我假设我需要混合使用sql和php代码来执行此操作,但我不知道从哪里开始。我没有使用Goo

我创建了一个php页面,其中包含一个v3谷歌地图和几个long和lat字段。其概念是用户为其事件添加一个标记,该标记填充要存储在M$-SQL 2008 R2数据库中的long和lat字段

我现在需要的是,web应用程序不允许在DB中任何其他long/lat的3英里范围内插入新的事件标记(用户看不到任何其他标记!)。理想情况下,这应该在他们尝试设置标记时发生,但在按下submit按钮并尝试填充DB时可能发生


我假设我需要混合使用sql和php代码来执行此操作,但我不知道从哪里开始。

我没有使用Google Maps API的经验,但您在帖子中声明您有一个包含long和lats的MySQL数据库表

阅读AJAX自动处理标记位置(并验证它),而不是按Submit。那会让你走得很远

现在来看看长片和长片。假设一个人把它放在(x,y)上。我们想绕着这个点做一个半径为3英里的圆。要选择周围3英里(正方形!注意)内的所有标记,我们需要进行类似的查询:

从long<'x+3'和long>'x-3'和lat<'y+3'和lat>'y-3'的标记中选择内容
当然是以英里为单位的整数3

现在,我们计算新的
(x,y)
标记和每个查询标记之间的long和lat差异,并将毕达哥拉斯三角形应用于该差异

假设其中一个数据库标记位于
(db\u x,db\u y)
上。我们通过
(db_x-x,db_y-y)
*脚注:这是正数还是负数并不重要,因为毕达哥拉斯认为这是平方)

现在我们来分析一下这些东西(都是伪代码):

h^2=(db_x-x)^2+(db_y-y)^2
h=sqrt(h^2)

现在,对于数据库中(我们查询的)所有long和lat,我们有到新标记的距离
h

然后循环遍历每个
h
变量,查看是否有一个
<3
,如果是,则无法放置标记

祝你好运