0

私がしなければならないことは非常に単純です - Number と呼ばれる CCK フィールド (驚くべきことに、10 進数が含まれています) を持つコンテンツ タイプがあり、このコンテンツ タイプには場所 (ノードごとに常に 1 つの場所) もあります。ここで、典型的な GMap マーカーの代わりに、GMap の CCK フィールド Number からの数値を次のように表示する必要があります。

http://cl.ly/2Y3T3J2B2X1M2w2d0u2n

それを行う方法はありますか?GMap モジュールに含まれているマーカー マネージャーを簡単に見て、独自のマーカー マネージャーを作成できるかもしれませんが、ノード データ (CCK フィールドの内容) をマーカー マネージャーに渡す方法だけがわかりません。

どんな助けでも大歓迎です。

4

3 に答える 3

1

次の例では、数値が 100、101、110、200 になると想定しています。この単純な例のシーケンスにより、ソリューションのすべての側面を説明できます。

GMap が一連のカスタム マーカーをサポートしているという事実を利用できます。

したがって、カスタム マーカー フォルダーを作成し、そのフォルダーに次のような .ini ファイルを作成します。

; Defaults
[defaults]
; Note: An empty shadow property will break IE.
; Leave it commented out if you aren't supplying an image.
;shadow = ""
anchorX = 16
anchorY = 51
infoX = 24
infoY = 4

; Marker sets
[numbermarkers]
name = "Number markers"
sequence = "100.png,101.png,110.png,200.png"

; Files

次に、100.png、101.png などに関連する PNG ファイル (他の画像タイプを使用できます) を作成します。GMap 設定ページの [再生成] ボタンを押して、ini ファイルを再読み込みし、新しいマーカー タイプを現れます。

GMap の設定で、マーカーの種類を「数値マーカー」(または ini ファイルで使用した任意の名前) として選択します。

マーカーは番号タイプに順番に適用されるため、(ビューを使用している場合はビュー設定で) 数値を、言及した 10 進数フィールドで並べ替えていることを確認してください。

ノードは番号順にマップに追加され、マーカー シーケンス内の画像も番号順に追加されるため、それぞれに適切なマーカーがあることがわかります。

新しい番号の将来の更新

たとえば、番号 105 を追加する場合は、次のことを行う必要があります。

  1. 関連する PNG を作成する
  2. ini ファイルを更新します - 105.png をsequence行に追加し、エントリを番号順に保ちます(つまり、101.png と 110.png の間に 105.png を追加します)。
  3. GMap 設定ページのRegenerateボタンを押して、ini ファイルを再読み込みします。
  4. また、標準の Drupal キャッシュをクリアする必要がある場合もあります (drush cc allは友人です)。

発生する可能性がある問題

私の経験では、マーカーのシーケンスには GMap のバグがあり、ここここで説明されています。このバグのおかげで、シーケンスから 1 つのアイテムのみが使用されます。

この問題をテストする簡単な方法は、GMap の組み込みの「週」マーカー タイプを使用して、それらがすべて「日」として表示されないことを確認することです!

このコードを使用してカスタムモジュールを作成することで、これを回避しました。

function mymodule_gmap($op, &$map)
{
    if ($op == 'pre_theme_map') {
        if (($map != null) && (array_key_exists('markers', $map)))
        {
            for ($count = 0; $count < sizeof($map['markers']); $count++) {
                $map['markers'][$count]['offset'] = strval($count);
            }
        }
    }
}

これは、「オフセット」フィールドを手動で設定して、正しいことを確認します。

新しい数値を追加する手順をより簡単にするためにこのコードを適応させることができるかもしれませんが、私にはわかりません - 調査はあなたに任せます!

マーカー フォルダー

カスタム マーカーを GMap のディレクトリに配置するのではなく、独自のモジュールで作成することをお勧めします。GMap に追加するとアップグレードが難しくなるためです。

これを行う方法の詳細については、次を参照してください。

于 2013-05-23T11:45:44.140 に答える
0

gmapモジュール内でそれを行うための簡単な解決策があるかもしれませんが(私はあなたが参照しているものだと思います)、同様の問題に直面した私が使用した解決策は、Drupal(7)(経度と緯度)からフィールド値を取得することでした)次に、GoogleのjavascriptAPIを使用してカスタムマーカーを配置します。

場所とgmapモジュールの編集には少し時間がかかりすぎました。

カスタムマーカーは、GoogleのAPIのaddMarker関数によって追加できます:http ://code.google.com/apis/maps/documentation/javascript/overlays.html#ComplexIcons

サンプルコードは次のようになります。

    <?php
    drupal_add_js('http://maps.googleapis.com/maps/api/js?sensor=false');

    $locationID = $node->field_mylocationField_location['und'][0]['lid'] ; 
    $theLocation = location_load_location($locationID);


     drupal_add_js('jQuery(document).ready(function(){                   
               initialize();
               });', 'inline');

    ?>

    <script type="text/javascript">
function initialize() {
var latlng = new google.maps.LatLng(<?php print($theLocation['latitude']) ?>, <?php   print($theLocation['longitude'])?>);
var myOptions = {
  zoom: 12,
  center: latlng,
  mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map_canvas"),
    myOptions);

 }

 </script>
于 2011-08-30T20:40:34.647 に答える