web-dev-qa-db-ja.com

地図に正確でない場所を表示するにはどうすればよいですか?

私はGMapを使用して、ユーザーがその地域の他の人を見つけられるようにしています。しかし、私はユーザーに、自分の都市と郵便番号を地図で利用できるようにするだけのプライバシーを許可し、メール送信のためにデータベースに完全な住所を残しておきたいと思います。これどうやってするの?地図上のピンの位置も、都市と郵便番号のみに基づいている必要があります。これは、位置を正確に示すためです。

たとえば、大統領が当サイトに登録したとします。彼は完全な住所である1600 Pennsylvania Ave NW、Washington D.C.を入力します。DC20500。管理者はこれを調べてニュースレターをメールで送ることができます。

D.C.エリアの別のユーザーは、出会う人を探しています。彼らはユーザーPOTUSの地図上のピンを見て見ます。ピンをクリックすると、ワシントンDCの一部の住所のみが表示されますDC20500。ピンの位置は正確ではないため、ユーザーはその位置から正確な住所を知ることができませんPOTUSのことですが、ユーザーは自分が近くにいることを知っていれば十分なので、ユーザーからユーザーへのメッセージを送信して連絡を取ります。

正確でないピン位置のソリューションは問題ありません。少しランダム化された場合。または、郵便番号のすべてのピンが「20500エリアの#人のユーザー」へのリンクを持つ1つのグループにグループ化され、ユーザーを完全なリストに移動させることができます。

これがGMap以外で実行できる場合は問題ありません。

7
Rob Mosher

私は同様の問題を抱えていました、そしてこれが私がそれを解決した方法です:

  1. 別の「場所」フィールドをコンテンツタイプに追加します。たとえば、「パブリックユーザーの場所」と呼びます。
  2. カスタムモジュールをビルドし、hook_form_alter()実装で、新しい場所フィールドを非表示にして、ユーザーが編集できないようにします。
  3. 次に、最初の場所の「正確でない」場所を取得する必要があります。これはGoogleジオコードで行います。

最初の場所が設定されたときにJavaScriptを介してそれを行う(それを行う方法)、または地理位置情報を行う フォームが送信されたとき 「手動で」「正確でない」を追加する'の場所。

部分的な住所にジオコードを使用すると、Googleジオコードは検索したエリアの中央の座標を提供します。

より具体的なジオコーディングについては、 Geonames API を使用することもできます。

2番目の方法(フォームの送信時に「正確でない」場所を作成する)を選択した場合、これは場所の作成に役立つ可能性があります。 プログラムでノードを作成するDrupal (cckおよび場所フィールドを含む)

余談ですが、Gmapモジュールはもう使用していません。私のニーズは少し複雑で、このモジュールには適合しなかったためです。問題が発生した場合は、Google API v3を使用して独自の小さなモジュールを作成することをお勧めします。

これにより、たとえば、Google Latitudeのように、「公共の場所」を円で囲んで地図に表示できます。

6
Strae

マップ上のそのピンは、郵便番号の中心(通常は幾何学的中心)になります(単一の建物のみを参照する郵便番号など、いくつかの例外があります)。

または、Zipコード内のすべてのピンは、「20500エリアの#ユーザー」へのリンクを持つ1つにグループ化され、ユーザーを完全なリストに移動させます。

これは、20500の郵便番号の中心に20ピンをすべて重ねて配置するよりも優れたソリューションです。

1
Tangurena