こちらから続く→GoogleMapsに複数のマーカーを表示する
複数のマーカーを表示するGoogleMapsを高田馬場グルメのカテゴリーページ(サブカテゴリー・アーカイブ)に設置したのですが、Internet Explorerだけ地図の中に1つだけ余分なマーカーが表示されていました。
Internet Explorerでも余計なマーカーが表示されない様にならないか、データCSVファイルをいろいろといじってみました。ちなみに、MovableType(以下MT)で書き出すCSVのデータファイルは下記のように4つのデータを","で区切って、各行の最後が";"になってます。
北緯,東経,カテゴリーID,カテゴリー名;
北緯,東経,カテゴリーID,カテゴリー名;
北緯,東経,カテゴリーID,カテゴリー名;
なぜ、マーカーの表示位置を決める北緯/東経のデータがないのに、マーカーが表示されてしまうのか?しばらく考えて、もしかしたら、各行を";"でsplitしているので、一番最後の行にも";"があるので、最後の";"の後に何もデータはないけど1行として処理されてしまっているのかなと...。
とりあえず、一番最後の";"を削除して試してみると、余計なマーカーは表示されなくなりました。原因が分かったので、今度はMTで書き出す際に、一番最後の";"だけをどうやって削除するかですね。
いろいろ検索して調べてみるとMTのモディファイアに"__last__"というものがあることがわかりました。最初は以下のようなテンプレートを使って<MTEntries>と</MTEntries>の間をエントリーの数だけ繰り返してCSVファイルを書き出してました。
<MTEntries strip_linefeeds="1">
<MTcategorydatacatgooglemapsnl>,<MTcategorydatacatgooglemapsel>,<$MTEntryCategoryID$>,<$MTEntryCategory$>;
</MTEntries>
モディファイアの"__last__"を使うことで繰り返しの最後だけ処理を変えるように変更したのが、下記のテンプレートの赤い文字の部分です。
<MTEntries strip_linefeeds="1">
<MTIf name="__last__"><MTcategorydatacatgooglemapsnl>,<MTcategorydatacatgooglemapsel>,<$MTEntryCategoryID$>,<$MTEntryCategory$><MTElse><MTcategorydatacatgooglemapsnl>,<MTcategorydatacatgooglemapsel>,<$MTEntryCategoryID$>,<$MTEntryCategory$>;</MTElse></MTIf>
</MTEntries>
これで、最後の行に";"が書き出されなくなり、Internet Explorerでも余計なマーカーが表示されなくなりました。