現状のコ?ド(表示がおかしくなるので一部大文字にしてます)
<?php query_posts($query_string . "&showposts=100"); ?>
<div id="map" style="width: 800px; height: 800px;"></div>
<script type="text/javascript">
google.maps.event.addDomListener(window, 'load', function() {
var mapdiv = document.getElementById( 'map' );
var myOptions = {
zoom: 15,
center: new google.maps.LatLng( 35.4155,139.4623 ),
mapTypeId: google.maps.MapTypeId.ROADMAP,
scaleControl: true
};
var map = new google.maps.Map( mapdiv, myOptions );
var marker = [];
var infowindow = [];
<?php $m=0; $m1=0; $m2=0; $i=0; $i2=0; ?>
<?php while (have_posts()) : the_post(); ?>
marker[<?php echo $m++; ?>] = new google.maps.Marker({
icon: 'http://maps.google.co.jp/mapfiles/ms/icons/blue-pushpin.png’,
position: new google.maps.LatLng( <?php echo post_custom("lat")?>,<?php echo post_custom("lon")?> ),
map: map,
title: '<?php the_title(); ?>'
});
infowindow[<?php echo $i++; ?>] = new google.maps.InfoWindow({
content: '<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>',
size: new google.maps.Size( 50, 30 )
});
google.maps.event.addListener( marker[<?php echo $m1++; ?>], 'click', function() {
infowindow[<?php echo $i2++; ?>].open( map, marker[<?php echo $m2++; ?>] );
});
<?php endwhile; // End the loop. Whew. ?>
var markerCluster = new MarkerClusterer( map, marker );
});
</script>
つけるとすると面倒ですね。「トップペ?ジにあるカテゴリーごとのボタンを押すと」という条件なのでPHPだけでは不可能で、javascriptとの連携が必要になります。(押すとカテゴリ別ページにJUMPしてそこにphpをおいておく、なら現状のコードを量産して対応できる)
プログラム動作の流れとしては下記のようになるかと思われます。
1.PHPで持っている店舗情報データ(位置、カテゴリなど)をjavascript側に全部渡す
サンプルコードにある<?php while (have_posts()) : the_post(); ?>あたりです。
ここをいきなりアイコン生成するのではなくJS側にデータを全て預ける形にします。
2.javascript側でデータ整形したあと初期表示をする。ユーザの行動を待つ。
new google.maps.Markerの処理部分をfunction化していつでも呼び出せるようにしておきます。
3.ユーザがカテゴリのボタンを押したら、JSに保存してあるデータと照合して、2で作ったfunctionを回して表示する
これをコードで書くと、とてつもない量になって大変です…^^;
WEB屋さんかシステム屋さんにお願いしたほうがいいかもしれませんが、お金がすごくかかりますので、そこまでして付ける機能かどうか考えてみてください。
質問者さんが現状コードを書いたのであれば、時間はかかりますが自作できるとおもいます。
どちらにしてもとても参考になるサイトが「無印良品」さんです。
http://www.muji.net/shop/
JSを覗いてみると詳しくコメントが書いてあるので、お手本になるとおもいますよ。
システム屋さんにお願いするとしても、こんなかんじで!と言えますし。
>カテゴリ?ごとのボタンはあくまで例でありまして、他のアクションであっても要件が満足できれば問題ないのですがちょっと思いつかなくて・・。
とのことでしたので、一応遷移ありの作り方(押すとカテゴリ別ページにJUMPしてそこにphpをおいておく)を書いておきますね
まず前提として、特定のカテゴリ情報だけ表示する場合は、先頭のコードを下のようにします。
<?php query_posts($query_string . "&cat=1&showposts=100"); ?>
&catというのはカテゴリ番号のことです。
http://kirinblog.com/wordpress/wordpress-tips.html
TOPページにはボタンでカテゴリ別ページへのリンクを設置しておきます。
カテゴリ別ページには、現在のコードを改修したものをコピーして置いていきます。
index.php(トップページ)//query_posts($query_string . "&showposts=100"); /map/(カテゴリ別ページのフォルダ) 1.php //query_posts($query_string . "&cat=1&showposts=100"); 2.php //query_posts($query_string . "&cat=2&showposts=100"); …下に続く
こうしておけば、1.phpにjumpすればカテゴリ番号1だけのmapが表示され、2.phpならカテゴリ番号2だけのmapが表示されます。
カテゴリが増えるごとに手動でページを増やす手間がありますが、回答1のような大規模な開発が必要ないので簡単だと思います。参考までに。
ちなみにカテゴリごとにマーカーを変えたい場合は、ページごとに現状コードのicon: 'http://maps.google.co.jp/mapfiles/ms/icons/blue-pushpin.png’,のURLを変更してやればOKです。