2016-01-13 20 views
1

我正在製作iOS應用程序,用戶可以在地圖上放置圖釘(CLLocation),並且該點的x英里範圍內的所有其他用戶將能夠看到它在地圖上。我怎樣才能做到這一點?iOS - 允許所有用戶查找他們附近的地圖引腳

+0

您在問如何在應用程序的多個實例之間共享數據。這可能是一個非常廣泛的問題,很難知道一個好的答案是什麼樣的。 – Jonah

+0

我想構建Anywall(https://parse.com/tutorials/anywall)所具有的功能,除了我不想使用Parse。實質上,我不希望地圖引腳侷限於個人用戶,而是希望所有其他用戶在用戶將地圖放置在地圖上時都能看到圖釘。 –

+0

這聽起來像是在問「如何爲應用程序實現我自己的API後端?」具體的解決方案是許多書籍,課程和多年經驗的主題。選擇「正確」的解決方案是一個更廣泛的問題。你在尋找什麼樣的答案? – Jonah

回答

1

1)用戶在地圖上放置一個別針 - >別針放置功能向經緯度和註釋名稱的服務器發送消息。

2)服務器檢查哪些用戶在半徑範圍內 - >向用戶發送靜默通知。

3)本地應用程序丟棄一個pin。

OR

2)服務器發送一個無聲通知給所有用戶(包含緯度,經度)。

3)應用的本地實例決定是否在該位置放置一個別針。

基本上你在這裏有一個公平的選擇 - 用戶需要不斷地更新服務器與他們的位置,只有相關的用戶得到通知?或者是否希望所有用戶都能收到通知,並確定是否應該刪除通知。

1

的一個可能的溶液A簡單的視圖可以有三個主要組成部分:

  1. 客戶機側應用程序,其允許用戶查看和地方引腳。
  2. 服務器端應用程序,它從許多客戶端接收位置並將其發送到許多客戶端。
  3. 一個存儲所有已知引腳的數據庫。

接下來的問題提出了兩個有趣的序列:

創建針:

  1. 用戶創建一個客戶端應用程序的銷。客戶端應用程序將該引腳的描述發送到服務器(這通常是HTTP POST請求,但有很多選項)。
  2. 服務器接收該請求,將驗證它理解銷的描述以及客戶端有權創建它,將其轉換成在數據庫便於存儲的格式,並將其發送到數據庫。
  3. 數據庫將新的引腳信息添加到已知引腳的列表中。
  4. 服務器通過「成功」消息來響應客戶端的請求,確認引腳已保存。

查看引腳:

  1. 的客戶端應用程序需要顯示附近的銷(因爲用戶發起的應用程序,或切換到地圖視圖,或者該應用程序接收到的通知,或其它)。客戶端向服務器發送一個請求,詢問哪些請求包含客戶端的位置。 (你可以決定客戶端是否也定義了什麼距離計數爲「附近」)(如果創建一個引腳使用HTTP POST,那麼這可能是一個HTTP GET,但同樣有很多選項。)
  2. 服務器收到這個請求,確定它是否應該與這個用戶共享pin信息,如果是,則構造一個查詢從數據庫中獲取所有「附近」引腳。
  3. 數據庫使用有關0到多個引腳的信息來響應此查詢。
  4. 服務器將這些引腳的數據庫表示形式轉換爲客戶端應用程序可以理解的格式,併發送包含這些引腳的響應。 (由於這組針腳變得非常大,這可能會變得更加複雜;服務器可能只會返回一些附近的針腳以及關於還沒有包含多少針腳的信息,客戶可能會在第二個請求中獲得另一個「結果頁」 )

有很多決定要做,並有許多工具可供選擇來構建所有這些作品。有很多編程語言可以用來編寫服務器端組件(以及許多用這些語言編寫的框架,這些框架試圖使構建特定類型的Web應用程序更容易)。有許多數據格式可以用來交換信息,許多數據庫可能用於存儲這些數據(其中一些數據格式已經支持您需要確定哪些引腳「接近」給定緯度的地理位置數學和經度)。

相關問題