Google Mapの表示について
Posted: 2007年4月11日(水) 11:49
http://cms.al-design.jp/newsentry.php?eid=00068
上記の機能を利用してgoogleマップを導入したいのですがうまくいきません…。
サンプルのjavascriptを利用して、マップが表示されるところまでは出来たのですが、
コンテンツ管理画面から新規エントリで指定した緯度・経度・縮尺が反映されず、
どのエントリも同じ地図が表示されてしまいます。
読み込み側のphpには、下記javascriptを貼り付けています。
サンプルからほぼそのまま抜いたものです。
----------------------------------------------------------------------
// CMSDからのデータを格納する変数
var cmsdVars = {};
cmsdVars.mapdata = {}; // 地図情報
cmsdVars.d = function(id){return cmsdVars.d[id]||(cmsdVars.d[id]=(document.getElementById(id)||id))}; // getElementById用ユーティリティ
function load()
{
if ( ! GBrowserIsCompatible() ) { return false; }
// gmap生成
var map = new GMap2( cmsdVars.d( "map" ) );
map.addControl( new GLargeMapControl() );
map.addControl( new GMapTypeControl() );
// 初期表示位置
map.setCenter( new GLatLng( 35.681391, 139.766103 ), 15 );
// 各エントリのマーカーを生成
for ( var index in cmsdVars.mapdata )
{
makeMarker( map, cmsdVars.mapdata[index] );
}
}
// マーカーを生成して地図に表示する
function makeMarker( map, mapdata )
{
// マーカー生成
var marker = new GMarker( new GLatLng( mapdata.lat, mapdata.lng ) );
map.addOverlay( marker );
// マーカー表示イベントハンドラ
var showMarker = function(){
// マーカーを地図の中央に持ってきて、情報ウィンドウを表示する。
marker.openInfoWindowHtml( cmsdVars.d( 'title' + mapdata.eid ).innerHTML
+ cmsdVars.d( 'description' + mapdata.eid ).innerHTML );
};
// clickイベントハンドラを設定
GEvent.addListener( marker, "click", showMarker );
// エントリ見出しをクリックした際のイベントハンドラを定義・設定
cmsdVars.d( "title" + mapdata.eid ).onclick = function(){
// zoomを設定
map.setCenter( new GLatLng( mapdata.lat, mapdata.lng ), mapdata.zoom );
// マーカー表示
showMarker();
return false;
}
}
----------------------------------------------------------------------
この中の
// 初期表示位置
map.setCenter( new GLatLng( 35.681391, 139.766103 ), 15 );
の箇所の緯度・経度・縮尺が、すべてのエントリの地図に反映されてしまうようです。
ちなみにデザインファイルの読み込み箇所は、下記のようにしています。
----------------------------------------------------------------------
<div id="map" style="padding: 5px; width: 485px; height: 400px;">
<script type="text/javascript">
cmsdVars.mapdata['<xsl:value-of select="@id" />'] = { 'eid':'<xsl:value-of select="@id" />', 'lat':<xsl:value-of select="location/@lat" />, 'lng':<xsl:value-of select="location/@lng" />, 'zoom':<xsl:value-of select="location/@zoom" /> };
</script>
----------------------------------------------------------------------
色々と試しているのですが、解決できません…。
お手数ですがアドバイスいただければと思います。
よろしくお願い致します。
上記の機能を利用してgoogleマップを導入したいのですがうまくいきません…。
サンプルのjavascriptを利用して、マップが表示されるところまでは出来たのですが、
コンテンツ管理画面から新規エントリで指定した緯度・経度・縮尺が反映されず、
どのエントリも同じ地図が表示されてしまいます。
読み込み側のphpには、下記javascriptを貼り付けています。
サンプルからほぼそのまま抜いたものです。
----------------------------------------------------------------------
// CMSDからのデータを格納する変数
var cmsdVars = {};
cmsdVars.mapdata = {}; // 地図情報
cmsdVars.d = function(id){return cmsdVars.d[id]||(cmsdVars.d[id]=(document.getElementById(id)||id))}; // getElementById用ユーティリティ
function load()
{
if ( ! GBrowserIsCompatible() ) { return false; }
// gmap生成
var map = new GMap2( cmsdVars.d( "map" ) );
map.addControl( new GLargeMapControl() );
map.addControl( new GMapTypeControl() );
// 初期表示位置
map.setCenter( new GLatLng( 35.681391, 139.766103 ), 15 );
// 各エントリのマーカーを生成
for ( var index in cmsdVars.mapdata )
{
makeMarker( map, cmsdVars.mapdata[index] );
}
}
// マーカーを生成して地図に表示する
function makeMarker( map, mapdata )
{
// マーカー生成
var marker = new GMarker( new GLatLng( mapdata.lat, mapdata.lng ) );
map.addOverlay( marker );
// マーカー表示イベントハンドラ
var showMarker = function(){
// マーカーを地図の中央に持ってきて、情報ウィンドウを表示する。
marker.openInfoWindowHtml( cmsdVars.d( 'title' + mapdata.eid ).innerHTML
+ cmsdVars.d( 'description' + mapdata.eid ).innerHTML );
};
// clickイベントハンドラを設定
GEvent.addListener( marker, "click", showMarker );
// エントリ見出しをクリックした際のイベントハンドラを定義・設定
cmsdVars.d( "title" + mapdata.eid ).onclick = function(){
// zoomを設定
map.setCenter( new GLatLng( mapdata.lat, mapdata.lng ), mapdata.zoom );
// マーカー表示
showMarker();
return false;
}
}
----------------------------------------------------------------------
この中の
// 初期表示位置
map.setCenter( new GLatLng( 35.681391, 139.766103 ), 15 );
の箇所の緯度・経度・縮尺が、すべてのエントリの地図に反映されてしまうようです。
ちなみにデザインファイルの読み込み箇所は、下記のようにしています。
----------------------------------------------------------------------
<div id="map" style="padding: 5px; width: 485px; height: 400px;">
<script type="text/javascript">
cmsdVars.mapdata['<xsl:value-of select="@id" />'] = { 'eid':'<xsl:value-of select="@id" />', 'lat':<xsl:value-of select="location/@lat" />, 'lng':<xsl:value-of select="location/@lng" />, 'zoom':<xsl:value-of select="location/@zoom" /> };
</script>
----------------------------------------------------------------------
色々と試しているのですが、解決できません…。
お手数ですがアドバイスいただければと思います。
よろしくお願い致します。