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


7

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

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

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

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

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

回答:


6

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

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

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

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

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

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

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

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


1

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

または、郵便番号内のすべてのピンが1つにグループ化され、「20500エリアの#人のユーザー」へのリンクが表示されます。これにより、ユーザーは完全なリストに移動します。

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.