ページ 11

Googlemapについて

Posted: 2007年6月06日(水) 19:15
by spico
お世話になっています。

サンプル(maplog_list.php)をもとに1件のエントリーに1つの地図を表示する方法でGoogle mapのテストを行っています。
地図は問題なく指定した箇所で表示されるのですが、マーカーをクリックした時に表示される吹き出しの中のテキストの取得がうまくいかず、undefinedとなってしまいます。


maplog_list.php内の下記のjavascript部分の'title'や'description'を任意の
ものに変更するだけではダメなんでしょうか?
マーカーのclickイベント時に、情報ウィンドウを表示する。
GEvent.addListener( marker, "click",
function() {
marker.openInfoWindowHtml( '<div class="marker_data_html"><h2>' + cmsdVars.d( 'title' + mapdata.eid ).innerHTML + '</h2>'
+ '<p>' + cmsdVars.d( 'description' + mapdata.eid ).innerHTML + '</p></div>' );
}
ご教示お願いします。

Re: Googlemapについて

Posted: 2007年6月07日(木) 14:27
by webmaster
 spicoさん、ご質問ありがとうございます。
 google maps連携については詳しい解説をつけておらず、お手数をおかけして
おります。

 もし title と descriptionに対応する項目名を hogehoge1や
hogehoge2にしたい場合には、maplog_list.phpのコードではなく、
デザイン定義側(gmap.list.default.design.xsl )を次のように変更するだけで
OKです。

コード: 全て選択

<h2 id="title{@id}" class="entry"><xsl:value-of select="hogehoge1" /></h2>
<p id="description{@id}" class="entry"><xsl:value-of select="hogehoge2" disable-output-escaping="yes" /></p>
 仕組みについてもう少し説明を加えます。
 maplog_list.php内の引用箇所が何をやっているかというと、

コード: 全て選択

<div class="marker_data_html">
  <h2>※getElementById( 'title00001' ).innerHTMLの結果</h2>
  <p>※getElementById( 'description00001' ).innerHTMLの結果</p>
</div>
 というHTMLを作成してそれを吹き出しに設定しています。
 title00001の「00001」はエントリIDで、この部分が00002とか00005とか
に置き換えられます。

 ※getElementById( 'title00001' ).innerHTML の部分は実際のコードでは

コード: 全て選択

cmsdVars.d( 'title' + mapdata.eid ).innerHTML
 となっていますが、cmsdVars.d は、実際には getElementByIdの別名です。

 getElementById( 'title00001' ) や getElementById( 'description00001' )
がどこからデータを引っ張ってくるかというと、デザイン定義である
gmap.list.default.design.xsl の中で定義されているこの部分からです。

コード: 全て選択

<h2 id="title{@id}" class="entry"><xsl:value-of select="title" /></h2>
<p id="description{@id}" class="entry"><xsl:value-of select="description" disable-output-escaping="yes" /></p>
 h2とpのid属性に、それぞれ「title+エントリID」「description+エントリID」
というidをつけています(HTMLタグのid属性とエントリIDを表す@idとで紛らわしい
ですが・・・)。
 そして、h2とpの中に、タイトルにしたいデータと説明文にしたいデータを
xsl:value-ofで出力しています。

 このh2の中身が、先ほどのJavaScriptの

コード: 全て選択

cmsdVars.d( 'title00001' ).innerHTML
 で取得されるわけです。

ありがとうございました。

Posted: 2007年6月07日(木) 17:24
by spico
丁寧な解説ありがとうございます。うまくいきました。
javascriptの知識不足でご迷惑おかけしました。
今後とも宜しくお願いいたします。