web-dev-qa-db-ja.com

カスタム住所フィールドから生成されたマップ

一見シンプルな問題がありますが、しばらくの間それで立ち往生しています。

1つのコンテンツタイプのノードの大きなデータベースがあります。テキストフィールドで構成されるアドレスがあります。1つはストリート用、もう1つは都市用などです。州は事前定義された分類法です。これらのフィールドのうち4つ(州を含む)を使用して、マップの緯度/経度としてジオコーディングできる文字列を取得します。

これらのフィールドをビューで使用できるようにする必要もあります(たとえば、州フィルターのようなフィルターとして、トークンとしてなど)。 GMaps + Location(Viewsモジュールは各位置エントリを個別のフィールドとして認識します)で実行できますが、GMapsは古いモジュールのように見え、クールではない定義済みの州を使用せざるを得ません。

また、ユーザーがノードの1つを表示したときに小さなマップを表示し、もう1つをホームページ用に表示し、すべての場所にマークを付けて、公開されたフィルターで除外する準備をします。

おそらくジオコーディングされたフィールドコレクションが選択肢の1つだと思いましたが、そのようなフィールドの個別の要素が奇妙にフィルタリング/並べ替えの基準としてViewsモジュールに表示されません。計算フィールドも試してみましたが、テキスト出力がジオコーディングされないバグがあります。 ( http://drupal.org/node/1679926 -バグの説明)

何か不足していますか?アドレス要素としてカスタムフィールドで構成されたマップを取得する他の簡単な方法はありますか?

よろしく!

1
Zen

ジオコーダーモジュール を使用できます。それはあなたがそれに通してほとんどすべてをジオコーディングします。すでに設定されているテキストフィールドも。フィールド設定では、マルチセルクを使用して、ジオコーディングするフィールドを選択できます。すべてのテキストフィールドと分類フィールドを指定できます。次に、 OpenLayersモジュール を使用して、地図上に場所を表示できます(単一および組み合わせ)。

編集:複数選択のスクリーンショットを添付

enter image description here

2
user842

あなたが言及した問題に基づいて、私はそれがDrupal 7.であると仮定します。したがって、最初に行うことは、各要素からアドレスを アドレスフィールド に移動することです。アドレスは完全にトークンおよびビューと互換性があり、すべての国と州のサポートを提供します。分類法を使用して自分で操作する必要はありません。

これを行うには、 Migrate および Migrate Extras を確認します。

これが完了したら、 geocodergeofield および openlayers を使用して目的の出力を取得できます。

しかし、それは間違いなくいくつかの仕事です。

1
junedkazi

これはあなたの質問全体に答えるわけではありませんが、あなたが答えを得るのを助けるかもしれません。ノードのアドレスに基づいて簡単なマップを追加する方法は次のとおりです。

  1. 非常に不格好なインターフェースを備えていますが、国際住所をサポートする住所フィールドモジュールを使用しました。 (フィールドは、ユーザーが選択した国に基づいて動的に変化します。)
  2. ビューを使用してノードを表示しましたが、Display Suiteまたは他のソリューションを介してカスタムフィールドを使用することもできます。
  3. 次のコードを(ビューの書き換えられたフィールドとして)使用して、各ノードのアドレスのマップを作成および埋め込みました。 (すべての>と<を中括弧に変換して表示します。変更されていないコードは http://Pastebin.com/gR9Hxn9a で参照してください。角括弧はビューの他のフィールドを参照しています。)

{a href="http://maps.google.com/?q=[field_location_address-premise]+[field_location_address-sub_premise]+[field_location_address-thoroughfare]+[field_location_address-locality]+[field_location_address-dependent_locality]+[field_location_address-postal_code]+[field_location_address-administrative_area]+[field_location_address-sub_administrative_area]+[field_location_address-country]" target="_blank"} {img src="http://maps.googleapis.com/maps/api/staticmap?markers=[field_location_address-premise]+[field_location_address-sub_premise]+[field_location_address-thoroughfare]+[field_location_address-locality]+[field_location_address-dependent_locality]+[field_location_address-postal_code]+[field_location_address-administrative_area]+[field_location_address-sub_administrative_area]+[field_location_address-country]&zoom=7&size=200x150" class="locationmap" /} {br /} [field_location_address_1]{/a}

1
R. Durham

テンプレート(ノードまたはビュー)のフィールドをDSMしてフィールド値を使用し、アドレスを含む埋め込みコードだけを使用してマップを作成し、それらの値をテンプレートファイル内の埋め込みiframeに手動で添付できます。ただのアイデア。

0
SoundCheese