幼稚園や学校の検索を本当に便利にします。 Yandex Mapsの適用された使用

過去数ヶ月間、私たちはOsvita.com.uaプロジェクトに取り組んでいます-ウクライナの教育。 他のセクションの中で、2つは就学前教育と学校教育に専念しました-「学校」と「幼稚園」、大部分の選択は領土の場所によって決まります-家に近いほど良いです。 さらに、すべてのカタログは原則に基づいて作成されています。ここには、住所と電話番号のある500の庭があります。 私は別の愚かなクローンを作りたくありませんでした。



住所を入力して、家の必要な半径内のすべての庭園を見つけ、距離で並べ替え、さらには地図で確認します。



そして、すべてが非常にリアルであることが判明しました。 起こったことは次のとおりです:( テスト住所:1/2 Lunacharsky St.、Kyiv )。



画像



habrakatの下でどのように起こったのか



問題の声明



大都市があり、そこには住所のある200〜500の庭があります。たとえば、1 kmまたは2 kmの地域で、ユーザーの住所に最も近い庭を見つけ、距離で並べ替える必要があります。



プラットフォームの選択



無料のWebマップのさまざまなプロバイダーから選択します。



結果:Yandexマップが選択されます。



機会と課題



Yandex.Maps APIは、他の多くのシステムと同様に、次の機能を提供します。



したがって、マップ上に特定の庭を表示することは問題ありません(多くの人がすでにこれを行っています)。 ユーザーが住んでいる場所を地図上に表示するのも簡単です。 庭とユーザーの間の距離を計算するのも簡単な作業です。 しかし、市内には10の庭はありません。また、最も近いものを見つけることができるように、検索ごとに200から500のクエリを作成することは問題です(また、1日あたり25,000のクエリの制限を簡単に超えてしまい、そのような検索には多くの時間がかかります)。



ソリューションと実装



すべての計算をサーバー側に転送します。 これを行うには:

  1. 幼稚園の住所のデータベースに入力するとき、Yandex Maps APIに1回要求し、この住所の座標を決定し、住所とともにデータベースに入力します。
  2. ユーザーがYandex.Maps APIを介して最も近い庭園を検索すると、住所の座標が決定されます。
  3. さらにサーバー上で、ユーザーの住所の座標がわかっているので、住所から1 kmまたは2 km離れたエリアの座標を計算します。
  4. 座標がこのエリアにあるすべての庭園を探しており、ユーザーの住所とともに、座標をサイトページに埋め込まれたYandex-Maps APIオブジェクトに渡します。
  5. このオブジェクトは、指定された縮尺でマップを描画し、その上に転送されたすべての庭園を表示します。 次の結果が得られます:(テストアドレス:1/2 Lunacharsky St.、Kyiv


カウント方法



座標を持つメインチップは、キロメートル単位の半径を度単位の半径に変換します。

そして、中心が送信元アドレスとなる正方形の座標を取得するには、

度単位の半径の単純な加算と減算を行う必要があります。



エピローグ



ウクライナでは、幼稚園や学校で同様の検索を実装した最初の企業のようです。 これがロシアでどのようになっているのかはわかりませんが、大まかなスキャンでは、そのようなものは見られませんでした。 したがって、私は共有したかった。 結局のところ、このアルゴリズムは非常にシンプルであり、多くのプロジェクトで確実に役立つでしょう。



All Articles