このブログを検索

大文字小文字を区別する 正規表現

Atelierで“旅行地図”が含まれるブログ記事

2019年12月 9日

隠居のドライブ:大阪湾一周ドライブ

11月の第3週、前から訪ねてみたいと思っていた南淡路に宿をとった。久しぶりの夫婦での一泊旅行である。
 ルートとしては、湾岸線を伝っていくのが正道であるが、あいにく工事中のため湾岸線の南大阪部分が全面通行止めとひっかった。急ぐ旅でもないので、一番大回りである中国道⇒山陽道⇒明石海峡大橋⇒淡路SA⇒淡路島南IC⇒ホテルのルートをたどった。距離は長いが、道も広く安全度は最も高いと思われた。
 島の真ん中を四国へ続く高速道路が縦断している。目的は、南淡路のホテルに宿泊することなので、寄り道をすることなく、南下する。ホテルの中華レストランがマアマアとの話だったので、昼食はそこでのランチにした。目的のも一つは、渦潮を見ることである。ホテル近くの福良港から出ている観潮船に乗ることにした。最近就航したばかりの日本丸という船である。観潮には、潮の時期が少しずれているらしいが、結構な迫力であった。随分昔に、陸から見た記憶があるが、印象は違ったものだった。Sea Sideの部屋から鳴門大橋あたりに落ちる夕陽は日常を忘れさせた。
 翌朝、バイキングの朝食をゆっくり済ませて、四国に渡ることにした。徳島港から和歌山までフェリーでわたることにした。和歌山港から自宅までの距離は大したことはない。ロング・ドライブでないので老人運転手としてはありがたいコースである。
 旅行してから1ヶ月近くになってしまったが、とりあえず、アップすることにした。歳をとるにつれて、何をするにも時間がかかってしまう。
 久しぶりに、Google Mapを使って、旅行地図を作ってみた。写真には、自分が投稿したもの以外に、同じ場所で投稿されている他人の写真もけいさいされるようだ。除外する方法がわからない。

2018年5月23日

隠居のPC備忘録:Google mapで私的な地図を作成し、ブログに掲載する

今年の桜地図のように、私的な地図を作成してブログにアップロードすることは、少し前までは Java Script のコードを使用するなどかなりの難しいことだった。
参照:隠居のパソコン備忘録:Google Maps API V3 で旅行地図を作成する

 Google MAP は、どんどん進化している。最近、桜地図を作成していて私的な地図作成が非常に簡単になってきていることが分かった。このような地図を作成する方法を備忘録として記録しておきたい。
 当サイトで、アップしている YAMAKO さんのブログに、3月下旬に山陰・山陽地方をバスツアー された記録が掲載されている。これを題材に、このようなツアーの地図を Google Map に作成し、ブログにアップする手順を記録しておきたい。

  1. Google map をブラウザで開く。(大抵は、自宅近辺の地図が表示される)
  2. 左上の枠のメニューボタンmenu01.JPGをクリックすると、メニューボックスが表示される。
    「マイプレイス」を選択すると出てくる画面で、右上の「マイマップ」を選択し、下の方に青い文字で表示される「地図を作成」をクリックする。
  3. gmap002.JPG

  4. すると下のような画面になる。
  5. gmap005.JPG

  6. 地図の名前を「山陰・山陽バスツアー」として、はじめの訪問地である「倉敷美観地区」を検索ボックスに入力すると下のような画面になる。
  7. gmap006.JPG

  8. 画面中央のポップアップの下のアイコンは、それぞれ左から、マーカーを指定する「スタイル」IC01.JPG、ポップアップに表示する情報を「編集する」IC02.JPG、掲載する写真または動画をアップロードする「画像を追加する」IC03.JPG、今回は使っていないが、ルートを表示するIC04.JPG、そして掲載した写真や編集入力部分の削除する「対象物を削除」IC05.JPGである。

  9. 訪問地点を表示するマーカーは、Google map に標準で種々用意されているが、ここでは訪問順を示す番号入りのマーカーを使いたかったので、「他のアイコン」から「カスタムアイコン」を選択し、パソコン上に収納していた番号入りマーカーをアップロードした。ただし、カスタムアイコンは、一つづつしか登録できない。番号付きマーカーについては、過去のブログのGoogle Maps API で旅行地図を作る:番号付きマーカーを使う に記載している。

    gmap010.JPG

  10. 情報の編集ボックスには、訪問した日付とブログ記事へのURLを入力した。URLをクリックするとブログ記事へ誘導してくれる。

  11. カメラアイコンをクリックすると、パソコンからファイルを選択して画像をアップロードする画面となる。+ ボタンをクリックすると10枚まで続けてアップロードできるが、10枚以上のときは、保存後改めて、カメラアイコンをクリックして追加しなければならない。ただし、地図を公開して閲覧できる写真は10枚までである。

  12. 訪問先に順次マーカーを立て、関連リンク先や写真をアップすると、下図のように表示される。ここで地図が航空写真のような表示になっているのは、左ボックスの下にある「基本地図」でスタイルを航空写真を選択したからである。
  13. gmap011.JPG

  14. 作成した地図は、知人らと共有することができる。先ほどの画面にある左ボックス中断の「共有」ボタンをクリックすると、下のようなポップアップ画面がでるので、共有相手などを指定できる。メールで通知するのが一般的だろう。
  15. gmap012.JPG

  16. ブログに掲載するには、左ボックスの右上メニューボタンをクリックすると表示されるボックスから「自分のサイトに埋め込む」を選ぶと下のようにブログに貼り付けるコードが表示されるので、これをコピペすればよい。
  17. gmap013.JPG ⇛⇛ gmap014.JPG


 このようにして作成した地図は、当サイトの Studio YAMAKO の右枠の「山陰・山陽バスツアー」ボタンをクリックすると表示される。

2017年8月 4日

隠居のパソコン備忘録:ファイルの拡張子によって開くプログラムを設定する

当サイトの Studio YAMAKO では、年度別に「国内旅行地図」というページを開設している。現在、YAMAKOさんが、2017年に国内旅行した(訪問した)つど、その地点をプロットしマークを立て、そこに関連したブログ記事をリンクしている。
 ここで使用しているソフト(サービス)は、Google Maps JavaScript API V3 である。
(参照:隠居のパソコン備忘録:Google Maps API V3 で旅行地図を作成する
   隠居のパソコン備忘録: Google Maps API JS V3 でXML ファイルを読み込む
 この地図では、新しい地点を追加する毎に、XMLファイル(ここでは、V3_yamako_2017.xml)に地点情報を追加して対応している。このXMLファイルの編集には、XML notepad というXML に特化したテキスト編集ソフトを使用している。

XML notepad 編集画面
FFFTP-02.JPG


 この作業は、殆どの場合二階デスクに置いている Windows10 にアップグレードしたディスクトップパソコンで行っているが、時々一階居間においている今年購入したノートパソコンでも作業をする。作業対象となるファイルは、レンタル・サーバーー上にあるので、いずれのパソコンでもファイルを編集できる。
 ところが、新しいノートパソコンで XML ファイルを編集するソフト XML notepad が開かない。二階のパソコンでは、XML ファイルをダブルクリックするとXML notepad が立ち上がったのだが、新しいノートブックパソコンでは XML notepad をダウンロードしても、XML ファイルを編集するには、わざわざ XML notepad を開いて、編集するファイルを選択しなければならない。極めて不便である。
 それで、デスクトップパソコンと同様に、XML ファイルをダブルクリックすれば、XML notepad を開くことができないかと「Windows10 拡張子によって、開くプログラムを特定する」といった言葉でググってみると、いろいろとヒットするが、以下の方法で拡張子によって開くプログラムを指定することができることがわかった。

  1. Windows システムツールから、コントロールパネルを開く。コントロールパネルのプログラムを開く。
     
    コントロールパネル⇒プログラム画面
    panel-02.JPG
      
  2. ここで既定のプログラムあるファイルの種類を特定のプログラムでオープンを選択し、拡張子の .xml ライン(ここでは、既定のプログラムは、メモ帳となっている)を反転し、右上のプログラムの変更ボタンをクリックする。

    既定のプログラム⇒関連付けを設定する画面
    panel-04.JPG


  3. すると、ポップアップ画面に xml ファイルを編集する機能を持ったプログラムが表示される。XML notepad がインストールされていれば、XML Notepad 2007 が表示されるので、これを選択し、OK ボタンをクリックすれば、既定のプログラムが変更される。そして画面を閉じればいい。

    プログラムを選択するポップアップ画面画面
    2017-08-04 (3).png


 この方法で、例えば拡張子が mp3 のファイルを Windows Media Player で開くように指定できる。(Windows10 では、初期設定では、Groove ミュージックとなっている)

 なお、このブログを記載するにあたって、ポップアップ画面をキャプチャーした。その方法は、ポップアップ画面内にカーソルをおいて、Alt + PrintScreen キーを打てば、OneDrive のスクリーンショット フォルダーに保存されることが分かった。ついでに、記録しておきたい。

2016年11月13日

隠居のパソコン備忘録:Google Map で旅行地図を作成する

先日から、独自のルート地図を作るなどで Google Map をいろいろといじっていて分かったのだが、スマホアプリの山旅ロガーなどで記録したKMLファイルがなくてもルートを表現した旅行地図を作成をできることが分かった。
 当サイトのブログ Studio YAMAKO の執筆者は旅行した記録をこまめにアップロードされている。この旅行地図を、今までは Google Maps API という Javascript を使ったユティリティで作成して、Studio YAMAKO に、収載してもらっていた。。
 今回、郡上八幡や高山をバスツアーした記録を4回に分けてブログにアップロードされている。これを参照して旅行ルート地図を作成したので、手順を記録として残して置きたいと思う。

Google Map でルートつき旅行地図を作成する方法
  1. Google Map を起動する。
  2. 画面左上の検索窓左にあるメニューアイコンgmap02.JPGをクリックすると表示される「マイプレイス」をクリックすると表示される画面で、さらに「マイマップ」をクリックすると枠の下の方に地図を作成という青い文字が現れる。
  3. 地図を作成をクリックすると「無題の地図」と表示されたポップアップが表示される。
    gmap03.JPG

  4. ここで、ツールアイコン群から、ルート追加ボタンtour12.JPGをクリックし、左ボックスの下に表示される交通手段がになっていることを確認して、その下の枠に出発点から順次、マーカーを立てたい場所を入力する。すると、下のスクリーンショットのように、ルートが自動的にルートが表示される。
    tour11.JPG

  5. 地点を入力し終えると、下のようにルートが描画される。地点名は、例えば平湯温泉と入力すると何地点か候補を表示してくれるので、適切と思われる名前を選択すればよい。
    tour13.JPG

  6. この地図を左ボックスの右上にあるメニューボタンgmap16.JPGをクリックすると表示されるリストから、「KMLにエクスポート」を選択する。すると、下のようなボックスが表示されるので、セレクトボックスで<XXX地点からXXX地点へのルート>を選択し、<KMLファイルにエクスポートします・・・>にチェックを入れて、【ダウンロード】ボタンをクリックする。
    tour14.JPG

    KMLファイルに任意なファイル名をつけて、任意のフォルダーに保存する。

  7. 一旦、Google Map を閉じて、再度起動する。そして、上記 1. 2. まで実行する。

  8. ここで、左上ボックスの無題レイヤーの下のインポートをクリックする。すると、<インポートするファイルの選択>という画面が出るので、「アップロード」タグになっているのを確認して、【パソコンからファイルを選択】ボタンをクリックする。

  9. すると、ファイルを選択する画面となるので、先ほど保存した KML ファイルを読み込む。すると多分下のスクリーンショットのような縮尺の大きな地図が表示される。
    tour16.JPG

  10. 地図の縮尺の大きさは、右下のtour17.JPGボタンでも調整できるが、左ボックスの上部の「プレビュー」をクリックすると下のように適切な大きさで表示してくれる。
    tour15.JPG

  11. ここで、ボックス上部の「編集します」をクリックすると各マーカーを編集できるようになる。マーカーにカーソルを合わせクリックすると、下のスクリーンショットのように、マーカーの色やスタイル、リンク先のURL 表示、関連写真や動画の挿入などができるツールアイコンが表示される。
    tour19.JPG

  12. 用意されているマーカのスタイルは、例えば下の例のように、場所のジャンルだけでも数多くのスタイルの中からチョイスできる。
    tour18.JPG

  13. そのようにして、Google Map として機能する旅行地図を作成したものが以下の地図である。


2016年11月11日

隠居のスマホ備忘録:山旅ロガーを使う。測定結果を Google Map に表示する方法

前回のYahoo!地図印刷のエントリーを書くために、いろいろとウェブサーチをしているときに、Yahoo! が地図上にルートを描くことのできる「ルートラボ」というユティリティを提供していることが分かった。
 この「ルートラボ」を使って、ご近所散策ルートを作成したのが、下の地図である。作成方法などについては、ルートラボの使い方に詳しく載っている。
 旅行後の記録として、地図に記載しておくのは便利かもしれないが、まだ使い方をよく理解していないので記録ができない。

Yahoo! ルートラボによる地図作成

 

 この「ルートラボ」の学習と関連して、Google MAP での地図作成を再度復習してみると、前回2014年11月7日に記載した手順からさらに進化していることが分かった。 それで上で「ルートラボ」で表示した近頃散策しているコースを、スマホのアプリ山旅ロガーで記録した結果をもとにルート地図を作成した方法を記録しておきたいと思う。
 最新の方法で作成した地図を以下に示す。 

Google Map での地図作成



 2014年11月7日に記載した手順を最新の方法に修正して記録しておきたい。
山旅ロガーで記録したKML ファイルで歩行記録地図を作成する方法
 
  1. Google Map を起動する。Google のアカウントを持っていない場合には、新たに登録する。アカウントをひとつ持っておけば、Gmail(Web mail)、Google chrome(ブラウザ)、You Tube 、Google Map(地図検索)、Google ドライブ(クラウド型データ保存)などを利用できる。特に、Google ドライブは、スマホからデータを転送するときに便利なので、インストールしておきたい。
    起動すると登録したアカウントの場所を中心とする地図が表示されるはずである。

    Google 地図検索画面
    gmap01.JPG

  2. 画面左上の検索窓左にあるメニューアイコンgmap02.JPGをクリックすると表示される「マイプレイス」をクリックすると表示される画面で、さらに「マイマップ」をクリックすると枠の下の方に地図を作成という青い文字が現れる。
  3. 地図を作成をクリックすると「無題の地図」と表示されたポップアップが表示される。
    gmap03.JPG

  4. 上の画面で、インポートをクリックすると、下のようにKMLファイルを選択する画面となる。私はスマホで山旅ロガーに記録したKMLファイルを Google ドライブに転送しているので、<Google ドライブ>タグをクリックして <マイドライブ>を開き収納されているKMLファイルをインポートした。
    gmap04.JPG

  5. 最近の散策で山旅ロガーを使って記録した KMLファイルをインポートすると、下のスクリーンショットのように表示された。
    gmap07.JPG

  6. このとき、<プレビュー>タグをクリックすると適切な縮尺で表示される。
    ここで<編集します>をクリックすると下のスクリーンショットのように編集のためのボタンガ表示される。
    この手順以降の地図修飾手順がが、2014年11月7日のエントリーと大きく変わっている。
    gmap06.JPG

  7. <マーカーを追加>ボタンgmap11.JPGをクリックするとカーソルが十字マークになるので、目的とする位置でクリックしてマーカーを設置する。
    マーカーを設置するとその位置にポップアップ画面が表示されると同時に、左のポップアップ画面のマーカーのタイトルにカーソルすると、スタイルアイコンgmap13.JPGが出て来る。ここで<マーカーアイコンの色や形を選択できるようになっている。
    gmap14.JPG
  8. マーカーを保存し、再度マーカーをクリックすると、編集アイコンが表示されるので、<編集ボタン>でリンク先を挿入したり、<カメラボタン>をクリックして該当マーカーに関する写真をアップロードしたりできる。
    gmap15.JPG


  9. 上のいろいろなツールを使って、地図を編集し終わったら、左上のボックスの<コマンドボタン>gmap16.JPGをクリックすると表示されるボックスで「地図をコピー」を選択すると「Google マップ」⇛「マイプレイス」⇛「マイマップ」に保存できる。
    上の同じボックスで、「自分のサイトに埋め込む」を選択すると、HTMLコード( <iframe ・・></iframe>)が表示されるの、これをコピーしてブログに貼り付ければ、ブログ上に作成したMapが表示できる。

 行程を記録する KML ファイルがあれば、ルート地図の作成はなんとかなりそうである。もう少し学習して、旅行地図を google maps API の助けなしに作ってみたいと考えている。

2014年10月17日

隠居のパソコン備忘録:Youtubeをページ内で再生させるYouTube Player API を試してみる


 9月の終わりにあった和泉の国ジャズストリートで録画した Videoをブログにアップした。その時、ブログのページ内で再生できるようにしたかったが、方法が見つからず、YouTube にリンクするしかなかった。YouTube の画面はかなり noisy である。

 最近、ひょんなことで、ブログのページ内で録画を YouTube の機能を使って再生できることが分かった。私的な旅行地図などを作るときに使っている Google Maps API(Application Program Interface) と同じように、Javascript を使う。Codeを自ら作り出す能力はないから、他人様のコードのパクリである。Javascript だから少しぐらいは自分で改訂することが出来る。
 今回は、YoheiM.netYoutubeをサイト内で再生させるYoutube APIの使い方を参考にさせていただいた。

YouTube Player API で表示する動画


 上の YouTube 埋め込みプレーヤは、次のような Javascript コードで実現している。
 青太字部分は、YouTube に登録されたファイル名である。

<div id="player"></div>
<script>

    var tag = document.createElement('script');
   tag.src = "https://www.youtube.com/iframe_api";
  var firstScriptTag = document.getElementsByTagName('script')[0];
   firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

   var player;
   function onYouTubeIframeAPIReady() {

  player = new YT.Player('player', {
    height: '390',
    width: '640',
    videoId: 'rL--g6q7zu4',
    events: {
      'onReady': onPlayerReady,
      'onStateChange': onPlayerStateChange
    }
  });
}

function onPlayerReady(event) {
}


function onPlayerStateChange(event) {
    if (event.data == YT.PlayerState.ENDED) {
    alert('finish');
  }
}
</script>

追記(2015/10/26): Youtube の Webページヘ内で再生させるのに、上のコードでは、Internet Explorer では表示されないことが、最近になって分かった。現在では Yutube が iframe を使ったコードを提供しており、更に便利にWebページ内に埋め込むことが可能になっている。方法など詳細については、別に記録したいと思う。
 現在は、新しい埋め込みコードで、表示している。



2013年5月16日

北九州ドライブ旅行私的観光地図(番号入りマークを表示する)


 いつものように、旅行で訪れた地点をマークで表示する旅行地図を Google Maps API V3 で作成した。前回、和歌山を旅行した時の【初春の南紀私的観光旅行地図】のソースを土台にした。
 ソースは、html と xml のファイルがセットである。html のソースに手を加える部分は、タイトル、地図の中心点・大きさの指示であるが、今回は表示する地点が、14箇所となったので、これらのマークを作成するコードの追加が必要(単純に、元の行の数字を変えるだけであるが)であった。ついでに、マークの色を、オレンジ色に変えた。
また、呼び込んでくる xml ファイル名を指定しなければならない。

 このような新しいマークを作るのは、ICANN というサイトが提供している【Google-Maps markers generator】というページが極めて有用である。
 画面の指示通り、ピン・マークの色を選び、中に表示する数字またはアルファベットを指示して、ダウンロードボタンをクリックすると指定したフォルダーに指示したマーカーの数だけのファイルがダウンロードされる。今回の場合は、例えば、norange_Marker_xx.png というファイルが作成されている。これをFFFTPでサーバーにアップロードして使えばよい。

 単純だか、時間がかかる作業は、訪問地点の経度・緯度、地点名、表示する写真などにリンクするhtml コードをリストする xml ファイルの作成である。
 これも、前回の xml ファイルの内容を変更し、地点数を増やすだけの作業である。入力する経度・緯度の表示は、Google Maps で地点を特定し、地点を右クリックすると現れるポッピアップの「この場所について」をクリックして表示される10進法の数字を使う。私の場合、写真の EXIF に経度・緯度が表示される(カメラにGPSユニットをつけている。)が、これは60進法で、10進法に変換する必要があるので、Google Maps で地点が特定できないときに使っている。

北九州ドライブ旅行地図
  クリックすると地図として機能します。
map_kyusyu.JPG


2012年9月 2日

隠居のパソコン備忘録: Google Maps API JS V3 で、カテゴリー別に色違いマーカーを表示する


 酷暑で屋外での活動は歳を考えて自粛していた。それで、自然とパソコンに向かう時間が多くなっていた。取り組んだのは、V3 にバージョンアップした Google Maps JS API で旅行地図などを作成するなどのいろいろなトライである。

 といっても、一から Google Maps JS API で希望する地図を作成する能力はないから、公開されている人様のコードをいじることが主体である。このようなときに、重宝させていただいているのは、Using the Google Maps API v3にあるサンプルである。
 Mike Williams' tutorial というサイトで V2 でサンプル表示されていた More advanced stuff - Part 25 Marker Categoriesを、V3 コードに置き換えた translated to v3というのが紹介されている。これを利用すれば、野鳥撮影地点を種別に表示するときなどに使えそうと思い自分のできる範囲でいじって見ることにした。

 このような作業をする時の手順は、だいたい次のようにしており、備忘録として記録しておきたい。
  1. サンプル画面のソース・コード(IE の場合、メニューバーの表示⇒ソース)を取得する。これを、テキスト編集ソフト(私の場合:秀丸)にコピペし、名前をつけて、適当なフォルダーに、html ファイルとして保存する。
  2. サンプルコードで使用されている Javascript ユティリティ ファイル(今回の例では、downloadxml.js ファイル)や使用するマーカイメージ・ファイル(今回のサンプルでは、marker_red.png のようなファイル)を用意し、ファイル転送ソフト(私の場合:FFFTP )でサーバー(私の場合:Xserver )上の適当なフォルダーにアップロードしておく。
  3. サンプル・コードで使用されている xml ファイル(普通はサンプル・コード内で相対パスで表示されている。これを絶対パスにして、ブラウザで表示させる)をC&P して、秀丸の新しいファイルとする。適当な名前(xmlファイルで)で保存する。これも、先ほどと同じサーバー上の同じフォルダーにアップロードしておく。
  4. 秀丸画面で、自分の環境に合うように、サンプルコードのそれらのファイルの path を書き換える。私の場合、ミスがないように、絶対パスで書くことにしている。
  5. 自分のサーバー環境に合わせたサンプル・コードをブラウザで表示してみる。これで、參照サンプルと同じように表示されたら、サンプルのコピーは成功である。
  6. このサンプルコードを少しづついじって、目的とする地図(今回、地元の公園・ホームセンター・大型電気店を種別( category )に表示することを目指した。)に近づけていく。先ず、地図の中心を地元にするために、地図の center 緯度・経度を置き換えた。
  7. と同時に、xml ファイルも、サンプルで使われているファイルを真似して、新たに日本語を含むファイルを作って(XML ファイルの編集は、XmlNotepad を使っている)サーバー上にアップロードした。(日本語のエンコードは、UTF-8 )
  8. その他、category の名前を変えたことに対応する修正などを加えて保存、サーバーにアップロードして、ブラウザで表示してみた。地図やチェックボックス、日本語のサイドバーは、期待通り表示されたが、肝心のマーカーが表示されない。元のサンプルコードと見比べながら、チェックしてみたが、原因が分からない。
    JavaScriptや HTML のコードは、カンマ一つ抜けても動かないことがあるので、再度やり直すなど作業を続けて見たが、うまくいかない。
  9. 3日間ほど悩んで、諦めかけていたが、原因はどうやら XML ファイルにあるらしいと思われたので、再度フィルを眺めていると、ing(longitude:経度) と lat(latitude:緯度)の数字が入れ替わっていることに気がついた。今まで、このような XML ファイルは lat ⇒ lng という順序で記入していたのに、今回使ったサンプル XML ファイルは順序が逆になっていたのだ。サンプル XML ファイルの経度・緯度が海外の地点を示していたので、気づくのが遅れたらしい。
     数字を入れ替えてみると期待通りに表示されるようになった。ミスというのは大体において、このようにうっかりミスが多いものだが、ついつい難しく考えてしまいがちだ。
  10. このサンプルコードを土台に、マーカーの吹きだし(infowindow) に画像やリンクURL を表示を試みたが、それらも OK のようである。
     なお、写真の表示が、画面の中心に表示され背景がフェードアウトする lightbox も使えるので、今後いろいろな応用ができるのではないかと考えている。


 作成例:泉北ニュータウンの公園・ホームセンター・大型電気店地図 サンプル・ページ

  

2012年8月26日

隠居のパソコン備忘録: Google Maps API JS V3 での地図でマーカー地点をズームイン・アウトする


 V3 にバージョンアップした Google Maps JS API で旅行地図などを作成することをいろいろとトライしている。
 当サイト内の Studio YAMAKO のオーナーは、お住まいの横浜近郊はもちろんのこと、海外をも含めて様々なところを旅行され、それぞれの地点での綺麗な写真をブログにUPされている。
 旅行先を一枚の地図で表示することは無理なので、海外旅行については、その都度旅行先の地図を作って表示させてもらっているが、国内旅行については、年度別に、一枚の日本地図にプロットしている。(例:2011年旅行地図) だが、これでは地図が大まかすぎて、訪問先地点毎に、コントロールを使って、ズームインと地図の移動をする必要がある。

 それで何か良いサンプルはないかと探ってみると、Google Maps API links に、V2 で作成されたMike Williams' tutorial の The Basics - Part 3: Loading the data from an XML file with added "Zoom To, Zoom In, Zoom Out links in infowindow V3 に書き換えたサンプルコードが見つかった。
 2011年旅行地図では、隠居のパソコン備忘録: Google Maps API JS V3 でXML ファイルを読み込むに記録したサンプルコードを使った。今回のコードは、そのコードに、Zoom in・out の機能を付け加えたものである。呼び込んでくる XML ファイルは、同じ形式である。サンプルコードには、XML ファイルに zoom というタグが組み込まれていたが、なしでも機能するようである。
 2012年の旅行地図では、このコードを使った。見た目は、2011年旅行地図と変わらないが、地点をクリックして出てくる吹きだし(infowindow)に、表示される Zoom to [+] [-] をクリックすると、その地点が地図の中心となる。 さらに、[+] をクリックしていくと、Zoom が一段ずつUPする。2011年旅行地図に比べれば、少し改良された。
 下は、そのコードである。


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
<head> 
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
    <title>Google Maps Javascript API v3 Example: Loading the data from an XML</title> 
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> 
<script type="text/javascript" src="http://xxxxxxxxxx/JSlibrary/downloadxml.js"></script>
<style type="text/css">
html, body { height: 100%; } 
</style>
<script type="text/javascript"> 
//<![CDATA[
      // this variable will collect the html which will eventually be placed in the side_bar 
      var side_bar_html = ""; 
      // arrays to hold copies of the markers and html used by the side_bar 
      // because the function closure trick doesnt work there 
      var gmarkers = []; 
     // global "map" variable
      var map = null;
// A function to create the marker and set up the event window function 
function createMarker(latlng, name, html, zoom) {
    var contentString = html;
    // add the zoom links
    contentString += '<br><a  href="javascript:map.setCenter(new google.maps.LatLng('+latlng.toUrlValue(6)+')); map.setZoom('+zoom+');">Zoom To</a>';
    contentString += ' - <a  href="javascript:map.setCenter(new google.maps.LatLng('+latlng.toUrlValue(6)+')); map.setZoom(parseInt(map.getZoom())+1);">[+]</a>';
    contentString += ' - <a  href="javascript:map.setCenter(new google.maps.LatLng('+latlng.toUrlValue(6)+')); map.setZoom(parseInt(map.getZoom())-1);">[-]</a>';

    var marker = new google.maps.Marker({
        position: latlng,
        map: map,
        icon: new google.maps.MarkerImage('http://labs.google.com/ridefinder/images/mm_20_blue.png'),         
        zIndex: Math.round(latlng.lat()*-100000)<<5
        });
    google.maps.event.addListener(marker, 'click', function() {
        infowindow.setContent(contentString); 
        infowindow.open(map,marker);
        });
    marker.MyZoom = zoom;
    // save the info we need to use later for the side_bar
    gmarkers.push(marker);
    // add a line to the side_bar html
    side_bar_html += '<a href="javascript:myclick(' + (gmarkers.length-1) + ')">' + name + '<\/a><br>';
}
// This function picks up the click and opens the corresponding info window
function myclick(i) {
  google.maps.event.trigger(gmarkers[i], "click");
}
function initialize() {
  // create the map
  var myOptions = {
    zoom: 8,
    center: new google.maps.LatLng(34.717876,137.851424),
    mapTypeControl: true,
    mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU},
    navigationControl: true,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  }
  map = new google.maps.Map(document.getElementById("map_canvas"),
                                myOptions);
  google.maps.event.addListener(map, 'click', function() {
        infowindow.close();
        });
      // Read the data from example.xml
      downloadUrl("http://xxxxxxxx/xxxxxxxxx/xxxx/V3_yamako_2012.xml", function(doc) {
        var xmlDoc = xmlParse(doc);
        var markers = xmlDoc.documentElement.getElementsByTagName("marker");
        for (var i = 0; i < markers.length; i++) {
          // obtain the attribues of each marker
          var lat = parseFloat(markers[i].getAttribute("lat"));
          var lng = parseFloat(markers[i].getAttribute("lng"));
          var point = new google.maps.LatLng(lat,lng);
          var html = markers[i].getAttribute("html");
          var label = markers[i].getAttribute("label");
          var zoom = markers[i].getAttribute("zoom");
          if (!zoom) zoom = 15;
          // create the marker
          var marker = createMarker(point,label,html,zoom);
        }
        // put the assembled side_bar_html contents into the side_bar div
        document.getElementById("side_bar").innerHTML = side_bar_html;
      });
    }

var infowindow = new google.maps.InfoWindow(
  { 
//    size: new google.maps.Size(150,100),
    maxWidth: 450
  });

    // This Javascript is based on code provided by the
    // Community Church Javascript Team
    // http://www.bisphamchurch.org.uk/   
    // http://econym.org.uk/gmap/
    // from the v2 tutorial page at:
    // http://econym.org.uk/gmap/basic3.htm 
//]]>

</script> 
  </head> 

<body style="margin:0px; padding:0px;" onload="initialize()"> 
    <!-- you can use tables or divs for the overall layout --> 
     <table border="1"> 
<tr>
<td bgcolor="#FFFFCC" align="center" colspan="2"><font color="#000000"><strong><big>Yamako 国内旅行地図:2012年
</big></strong><br /></font></td></tr>      
<tr> 
        <td> 
           <div id="map_canvas" style="width: 780px; height: 820px"></div> 
        </td> 
        <td width = 220 valign="top"  bgcolor="#ffffe0" style="text-decoration: underline; color: #000000; font-size: small;" >
           <div id="side_bar"></div> 
        </td> 
      </tr> 
    </table> 


    <noscript><p><b>JavaScript must be enabled in order for you to use Google Maps.</b> 
      However, it seems JavaScript is either disabled or not supported by your browser. 
      To view Google Maps, enable JavaScript by changing your browser options, and then 
      try again.</p>
    </noscript> 

  </body> 
</html> 


2012年8月18日

隠居の旅行地図:真夏の山陰地方

 先のエントリー【隠居、真夏の山陰旅行を楽しむ】で、訪れた地点の地図を、Google Maps API V3 で作成してみた。
 訪問順に番号付きのマークを入れたいのだが、なかなかうまく行かない。ネットでいろいろと探ってみたが、ピッタリのサンプルが見あたらない。そのようなサーチの間に、標準のマーカー・アイコンを種々のアイコンに変える方法が分かったので、赤い押しピンを模したアイコンを採用してみた。このような種々のマーカー・アイコンは、Google から提供されていて、ダウンロードしなくても直接リンクすることで使えることも分かった。

 この地図は、加賀地方へ旅行した時とほぼ同じ形式であるが、各地点の経度・緯度、写真へのリンクなどは、外部ファイルとしての XML ファイルを呼び込む形式を取っている。