iOS-允许所有用户在附近找到地图引脚



我正在制作一个iOS应用程序,用户可以在地图上放置一个pin(CLLocation),距离该点x英里内的所有其他用户都可以在地图中看到它。我该怎么做?

1)用户在地图上放置一个pin->pin放置功能向服务器发送一条带有纬度、经度和注释名称的消息。

2) 服务器检查半径范围内的用户->向用户发送静默通知。

3) 本地应用程序丢失一个pin。

2) 服务器向所有用户发送一个静默通知(包含纬度、经度)。

3) 应用程序的本地实例决定是否在该位置放置pin。

基本上,你在这里有相当多的选择——用户是否需要不断更新服务器的位置,并且只向相关用户发送通知?还是希望所有用户都收到通知,并由应用程序决定是否应该删除通知。

一个可能的解决方案的简单视图可能有三个主要组件:

  1. 客户端应用程序,允许用户查看和放置引脚
  2. 一个服务器端应用程序,从许多客户端接收位置并向其发送pin
  3. 存储所有已知引脚的数据库

然后,这个问题提出了两个感兴趣的序列:

创建引脚:

  1. 用户在客户端应用程序上创建一个pin。客户端应用程序向服务器发送该引脚的描述(这通常是HTTPPOST请求,但有很多选项)
  2. 服务器接收此请求,验证它是否理解引脚的描述,以及客户端是否有创建该引脚的权限,将其转换为便于存储在数据库中的格式,并将其发送到数据库
  3. 数据库将新接点信息添加到其已知接点列表中
  4. 服务器以"成功"消息响应客户端的请求,确认pin已保存

查看引脚:

  1. 客户端应用程序需要显示附近的pin(因为用户启动了该应用程序,或切换到地图视图,或该应用程序收到通知,或其他什么)。客户端向服务器发送一个请求,询问哪个请求所有可见引脚,哪个请求包括客户端的位置。(您可以决定客户端是否也可以定义什么距离算作"附近"。)(如果创建pin使用HTTP POST,那么这可能是HTTP get,但也有很多选项。)
  2. 服务器接收此请求,确定是否应该与该用户共享pin信息,如果是,则构造一个查询,该查询将从数据库中获取所有"附近"的pin
  3. 数据库使用关于0到多个引脚的信息来响应此查询
  4. 服务器将这些引脚的数据库表示转换为客户端应用程序能够理解的格式,并发送包含这些引脚的响应。(随着引脚集变得非常大,这可能会变得更加复杂;服务器可能只返回附近的一些引脚和没有包括多少引脚的信息,然后客户端可以在第二个请求中获得另一个"页面"的结果。)

在构建所有这些部分的过程中,有许多决策需要做出,也有许多工具可供选择。有许多编程语言可以用来编写服务器端组件(还有许多用这些语言编写的框架,它们试图使构建某些类型的web应用程序变得更容易)。您可以使用许多数据格式来交换信息,也可以使用许多数据库来存储这些数据(其中一些数据库内置了对地理定位数学的支持,您需要确定哪些引脚"靠近"给定的纬度和经度)。

最新更新