地理を理解し、さまざまな言語を話す地理パッケージまたはライブラリ

私が参加した多くのプロジェクトでは、地理データを何らかの形で使用する必要がありました。 最も単純なサイトでさえ、原則として、そのページのいずれかに国または都市のリストがあります。ストアは商品の配送先を知りたいと考えています。 ソーシャルネットワークは、ユーザーの出身地を知りたい。 などなど。

どこへ行くか-ここでも、Habréには国、州、都市のドロップダウンリストがあります。

画像


私は(おそらくそうであるように)そのようなデータ(国のリストなど)をアレイ、データベース、および構成ファイルの両方に何度も保存する必要がありました。 プロジェクトに別の言語バージョンがある場合、他の言語でオプションを追加するのは面倒です。

一度にいくつかの問題が発生しますが、誰かがこのリストに挑戦した場合にのみ喜んでいます。



地理データは、スタンドアロンパッケージの理想的な候補です。 お気に入りのパッケージマネージャー(コンポーザー、npm、またはCocoaPods)に1つのコマンドを入力し、すぐに地理的な名前を操作する機会を得たいと思います。 ファッショナブルなhttp://momentjs.com/のようなものが欲しいのですが、地理についてです。 パッケージを1つ入れてください。いわば、このページを閉じてください。

驚いたことに、そのようなパッケージはまだ存在しないので、私は自分で作業を始めました。 手始めに、PHPバージョン。 この記事は私のアプローチの説明であり、この出版物の主な目的は他の開発者からの意見の集まりと考えることができます。 必要性の評価、パッケージの関連性。

提案された実装


これは、現時点ではPHPに最適なAPIのようです。

//     –   //             $planet = new Planet(); // ,     ,       $planet->getCountries()->toArray(); // ,        –  ,      $planet->getCountries()->useShortNames()->toArray(); //      $countries = $planet->getCountries(); $thailand = $countries->find(['code' => 'TH']); $thailand->getStates()->toArray(); //      $thailand->getStates()->setLanguage('ru')->toArray(); //       ( , " "  "") $thailand->getStates()->setLanguage('ru')->inflict('in')->toArray(); //      ?    geonames?   ? $capital = $thailand->getCapital(); $capital->getGeonamesId(); $capital->getLatitude(); $capital->getLongitude(); 


これはすでに、最初の画像のリストをサイトに非常に迅速に追加するのに十分です。

完全な幸福のために、私もしたいと思います:
 //        $russia->find(['zip' => '626430']); //      $planet->find(['zip' => 'EC3R 6DN']); //     $planet->find([ 'latitude' => 51.5078788, 'longitude' => -0.0899208 ]); 


Habréの人々の意見は私にとって重要ですが、私は誘惑されることはありません-私はすでに一般大衆の反応を待たずにPHPのパッケージを書き始めました。 パイロットバージョンはGitHubにあり、1か月の間に3〜4の最初の言語とすべての基本機能が表示されます。 誰かが開発に参加したい場合(他の言語のパッケージ-JavaScript、Rubyなどが特に興味があります)、私はあなたから個人的なメッセージを受け取ることを非常に嬉しく思います。

アプリケーションモデルとの通信


「しかし、ユーザーの都市を覚える方法」などの質問を予測します。そして、ここでの答えは非常に簡単です-国のISO 3166-1コード、都市のGeoNamesコードなど、データベース(またはそこにデータを書き込む場所)で標準識別子を使用します状態。 コードとそのコンテンツおよび翻訳を比較することに問題はなく、この特定のパッケージにアタッチされることはありません。

質問


主な質問は、この記事の目的です。アプリケーションでそのようなパッケージを使用しますか? または、地理データを自分で保存し続けますか?

Source: https://habr.com/ru/post/J283136/


All Articles