<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>たねっぱ！ &#187; API</title>
	<atom:link href="https://taneppa.net/tag/api/feed/" rel="self" type="application/rss+xml" />
	<link>https://taneppa.net</link>
	<description>コツコツあつめるWeb作りのためのたね　たねっぱ！Web系情報ブログ　Webのお役立ちネタ配信中！</description>
	<lastBuildDate>Tue, 09 May 2023 00:02:06 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>GoogleMapをカスタムしてグレースケール&amp;オリジナル画像マーカーの地図を作る方法</title>
		<link>https://taneppa.net/gmap_custom/</link>
		<comments>https://taneppa.net/gmap_custom/#comments</comments>
		<pubDate>Tue, 08 Sep 2015 02:43:40 +0000</pubDate>
		<dc:creator>tanippa!</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[Web制作]]></category>
		<category><![CDATA[API]]></category>

		<guid isPermaLink="false">https://taneppa.net/?p=2727</guid>
		<description><![CDATA[色々なサイトを見て回っていると、GoogleMapのデザインがグレースケールだったり、マーカーが普通と違うデザインになっていたり、カスタマイズされたGoogleMapを利用しているサイトをよく見かけますよね。今回は、GoogleMapをカスタマイズする方法を、グレースケール&#38;オリジナルマーカーのデザインを例としてご紹介したいと思います。]]></description>
				<content:encoded><![CDATA[<style><!--
#Map01, #Map02, #Map03 {
      width: 100%;
      height: 200px;
    }
    #Map01 img, #Map02 img, #Map03 img {
      max-width: none;
    }
--></style>
<p><span style="color: #ff0000;">※※※※※2017年6月 現在 Google Map APIの利用のために API KEY取得が必要になっております。</span></p>
<p>色々なサイトを見て回っていると、GoogleMapのデザインがグレースケールだったり、マーカーが普通と違うデザインになっていたり、カスタマイズされたGoogleMapを利用しているサイトをよく見かけますよね。</p>
<p>今回は、GoogleMapをカスタマイズする方法を、グレースケール&amp;オリジナルマーカーのデザインを例としてご紹介したいと思います。</p>
<h2>今回の目標</h2>
<p><img class="alignnone size-full wp-image-2738" alt="スクリーンショット 2015-08-31 13.46.22" src="https://taneppa.net/wp-content/uploads/2015/08/スクリーンショット-2015-08-31-13.46.22.png" width="930" height="198" /></p>
<p>今回の目標は、↑のようなグレースケールでマーカーにオリジナル画像を使った地図を表示することです。</p>
<p>では、まず基本から見て行きましょう！</p>
<h2 id="-">基本</h2>
<p>カスタマイズのためにはGoogleが提供しているGoogleMapApi v3を利用します。API?v3?ってなる人も多いと思いますが、とりあえずそういう名前なんだってスルーしてもらって構わないです。</p>
<p>では、とりあえず例として弊社を表示する地図を表示してみましょう。</p>
<h3 id="-">ソースコード</h3>
<pre class="brush: xml; title: ; notranslate">&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;ja&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;UTF-8&quot;&gt;
  &lt;title&gt;Google Map Custom Tutorial&lt;/title&gt;

  &lt;style&gt;
    /*
    地図を表示するための領域のスタイル指定
    サイズがしていされていないと地図が正常に表示されないので必ず指定しましょう
    */
    #map {
      width: 600px;
      height: 300px;
    }
  &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

  &lt;!-- 地図を表示するための領域 --&gt;
  &lt;div id=&quot;map&quot;&gt;&lt;/div&gt;

  &lt;script&gt;
    function initMap() {

      // 地図の初期中心座標を指定
      var latLng = new google.maps.LatLng(34.683497, 135.4888082);

      var map = new google.maps.Map(
        // getElementByIdには、地図を表示するための領域に
        // 指定したidを設定すること。（今回は「map」）
        document.getElementById(&quot;map&quot;),
        {
          zoom: 18,  // 地図の初期拡大率
          center: latLng, // 先ほど設定した中心座標を設定
          scrollwheel: false  // マウスホイールで拡縮しなくなる
        }
      );

      // マーカーの設定
      var marker = new google.maps.Marker({
        position: latLng,
        map: map
      });
    }
  &lt;/script&gt;
  &lt;script src=&quot;https://maps.googleapis.com/maps/api/js?callback=initMap&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</pre><br /><br />
<p><br /><br /></p>
<p><br /><br /></p>
<h3 id="-">結果</h3>
<div id="Map01"></div>
<h3 id="-">説明</h3>
<p>結果を見てもらえばわかりますが、なんの変哲もないGoogleMapですね。こんな表示の仕方ならわざわざGoogleMapAPIを利用する必要もないのですが、これからカスタマイズする為の基本形になりますのでわりと重要です。</p>
<p>コメントでも注釈を入れていますが、注意点としては、</p>
<ul>
	<li>21行目：地図を表示する為の領域をdivタグ等で作り、idを指定しておく</li>
	<li>32行目：スクリプト内のgetElementByIdでは、地図表示領域のidを指定する</li>
	<li>7~16行目：地図表示領域にはサイズを指定する</li>
	<li>47行目：callback=~にはscriptタグで指定した関数名（今回は24行目の関数）を設定する</li>
</ul>
<p>また、デフォルトだと地図上でマウスホイールを回した際に地図が拡縮するのですが、ページをスクロールしようとしたのに地図が拡縮するといった事が頻繁に発生し、ものすごいストレスフルなので「scrollwheel: false」の指定でマウスホイールに反応しないようにしています。マウスホイールでの拡縮を残しておきたい場合はこの行は削除しましょう。</p>
<h2 id="-">マーカーにオリジナル画像を指定する</h2>
<p>次に、マーカーをオリジナル画像に変える方法を説明したいと思います。</p>
<h3 id="-">ソースコード</h3>
<p>scriptタグ内以外は先ほどと同じなので、scriptタグ部分のみを記載します。</p>
<pre class="brush: xml; title: ; notranslate">&lt;script&gt;
  function initMap() {

    // 地図の初期中心座標を指定
    var latLng = new google.maps.LatLng(34.683497, 135.4888082);

    var map = new google.maps.Map(
      // getElementByIdには、地図を表示するための領域に
      // 指定したidを設定すること。（今回は「map」）
      document.getElementById(&quot;map&quot;),
      {
        zoom: 18,  // 地図の初期拡大率
        center: latLng, // 先ほど設定した中心座標を設定
        scrollwheel: false  // マウスホイールで拡縮しなくなる
      }
    );

    /***********************************************************************
    変更部分ここから
    **********************************************************************/
    // マーカーの設定
    var markerImg = {
      url: '/img/marker.png'  // マーカーの画像ファイルを指定
    };
    var marker = new google.maps.Marker({
      position: latLng,
      map: map,
      icon: markerImg
    });
    /***********************************************************************
    変更部分ここまで
    **********************************************************************/

  }
&lt;/script&gt;</pre><br /><br />
<p><br /><br /></p>
<p><br /><br /></p>
<h3 id="-">結果</h3>
<div id="Map02"></div>
<p>マーカーの画像が変わりました。このカスタマイズは非常に簡単ですね。</p>
<h3 id="tips-retina-">Tips: オリジナルマーカーのRetina対応</h3>
<p>「marker.png」を実際に表示させる2倍のサイズで用意し、「var markerImg」の部分を以下のように変更すればRetina対応できます。</p>
<pre class="brush: xml; title: ; notranslate">var markerImg = {
  url: '/img/marker.png',
  scaledSize : new google.maps.Size(40, 46)
};</pre><br /><br />
<p><br /><br /></p>
<p><br /><br /></p>
<p>「scaledSize」では、画像のサイズの1/2サイズを指定しています。</p>
<h3 id="tips-">Tips: マーカーをクリックした時に特定の処理を行いたい。</h3>
<p>少し応用になるのですが、マーカーをクリックした際に特定の処理をする必要が出る場合が結構あります。</p>
<p>その場合は以下の様なコードを追加することで対応できます。</p>
<pre class="brush: xml; title: ; notranslate">marker.addListener(
  'click',
  function(){
    // ここにさせたい処理を入れる
    alert('marker clicked.')
  }
);</pre><br /><br />
<p><br /><br /></p>
<p><br /><br /></p>
<h2 id="-">地図をグレースケールにする</h2>
<p>では最後は、地図自体のデザイン変更を説明したいと思います。</p>
<p>今回はグレースケールにする方法を例とします。</p>
<h3 id="-">ソースコード</h3>
<pre class="brush: xml; title: ; notranslate">&lt;script&gt;
  var map;
  function initMap() {

    // マップ基本設定
    var latLng = new google.maps.LatLng(34.683497, 135.4888082);
    map = new google.maps.Map(
      document.getElementById(&quot;map&quot;),
      {
        zoom: 18,  // 拡大率
        center: latLng,
        scrollwheel: false  // マウスホイールで拡縮しなくなる
      }
    );

    // マーカー設定
    var markerImg = {
      url: '/img/marker.png'
    };
    var marker = new google.maps.Marker({
      position: latLng,
      map: map,
      icon: markerImg
    });

    /***********************************************************************
    変更部分ここから
    **********************************************************************/
    // 地図をグレースケールに
    var mapStyle = [
      {
          &quot;stylers&quot;: [
            { &quot;saturation&quot;: -100 }
          ]
      }
    ];
    var mapType = new google.maps.StyledMapType(mapStyle);
    map.mapTypes.set('GrayScaleMap', mapType);
    map.setMapTypeId('GrayScaleMap');
    /***********************************************************************
    変更部分ここまで
    **********************************************************************/

  }
&lt;/script&gt;</pre><br /><br />
<p><br /><br /></p>
<p><br /><br /></p>
<h3 id="-">結果</h3>
<div id="Map03"></div>
<h3 id="-">説明</h3>
<p>肝は、</p>
<pre class="brush: xml; title: ; notranslate">var mapStyle = [
  {
      &quot;stylers&quot;: [
        { &quot;saturation&quot;: -100 }
      ]
  }
];</pre><br /><br />
<p><br /><br /></p>
<p><br /><br /></p>
<p>の部分です、この部分で地図のデザインを指定しています。</p>
<p>「saturation」は「彩度」という意味で、この値によって色の鮮やかさが変わります。「-100」が一番小さい値で、この最低値を指定することで地図がグレースケールになります。</p>
<p>この設定ですが、<a href="http://gmaps-samples-v3.googlecode.com/svn/trunk/styledmaps/wizard/index.html" target="_blank">Google Maps API Styled Maps Wizard</a>を利用することで視覚的に設定値を得ることが出来ます。</p>
<p><a href="https://taneppa.net/wp-content/uploads/2015/08/スクリーンショット-2015-08-31-13.08.07.png"><img class="alignnone size-full wp-image-2745" alt="スクリーンショット 2015-08-31 13.08.07" src="https://taneppa.net/wp-content/uploads/2015/08/スクリーンショット-2015-08-31-13.08.07.png" width="930" height="664" /></a></p>
<p>今回のグレースケールのパターン以外にも、設定次第で色々なスタイルを作成出来ますので、試してみましょう。</p>
<h2 id="-">以上</h2>
<p>以上で簡単なGoogleMapのカスタマイズが出来るようになりました。GoogleMapのカスタマイズは、特にデザイン性の高いサイトで必要になることが多いので是非出来るようになっておきましょう。</p>
<p>以上、たにっぱでした〜</p>

<script type="text/javascript">// <![CDATA[
function initMap() {

      // 地図の初期中心座標を指定
      var latLng = new google.maps.LatLng(34.683497, 135.4888082);
      var options = {
        zoom: 18,  // 地図の初期拡大率
        center: latLng, // 先ほど設定した中心座標を設定
        scrollwheel: false  // マウスホイールで拡縮しなくなる
      };

      /***********************************************************************
      Map01
      **********************************************************************/
      var map01 = new google.maps.Map(
        document.getElementById("Map01"), options
      );
      var marker01 = new google.maps.Marker({
        position: latLng,
        map: map01
      });

      /***********************************************************************
      Map02
      **********************************************************************/
      var map02 = new google.maps.Map(
        document.getElementById("Map02"), options
      );
      // マーカーの設定
      var markerImg = {
        url: 'https://taneppa.net/wp-content/uploads/2015/08/marker.png'
      };
      var marker02 = new google.maps.Marker({
        position: latLng,
        map: map02,
        icon: markerImg
      });

      /***********************************************************************
      Map03
      **********************************************************************/
      var map03 = new google.maps.Map(
        document.getElementById("Map03"), options
      );
      var marker03 = new google.maps.Marker({
        position: latLng,
        map: map03,
        icon: markerImg
      });
      var samplestyle = [
        {
            "stylers": [
              { "saturation": -100 }
            ]
        }
      ];
      var sampleMapType = new google.maps.StyledMapType(samplestyle);
      map03.mapTypes.set('GrayScaleMap', sampleMapType);
      map03.setMapTypeId('GrayScaleMap');

    }
// ]]&gt;</script><script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?callback=initMap">// <![CDATA[

// ]]&gt;
</script>
]]></content:encoded>
			<wfw:commentRss>https://taneppa.net/gmap_custom/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>外部ブログのタイトルを自分のサイトに表示させる（javascript）</title>
		<link>https://taneppa.net/rssfeed_js/</link>
		<comments>https://taneppa.net/rssfeed_js/#comments</comments>
		<pubDate>Tue, 05 Apr 2011 05:22:21 +0000</pubDate>
		<dc:creator>futappa_staff</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[RSS]]></category>

		<guid isPermaLink="false">https://taneppa.net/?p=2101</guid>
		<description><![CDATA[JavaScriptをつかって外部ブログのタイトルを自分のサイトに表示させる方法を紹介します。google が提供している feed API を使えば超簡単！]]></description>
				<content:encoded><![CDATA[

<script type="text/javascript" src="https://www.google.com/jsapi"></script><script type="text/javascript">// <![CDATA[
google.load("feeds", "1");

function initialize() {

	//ブログなどのURL設定
	var feed = new google.feeds.Feed("https://taneppa.net/feed/");

	// 読み込み件数を設定
	var postcount = 3;

	//出力内容を空っぽに初期化
	var htmlstr = ""; 

	//HTML内のdiv#feedListを取得
	var container = document.getElementById("feedList"); 

	feed.load(function (result){

		if (!result.error){

			for (var i = 0; i < postcount; i++) {
				var entry = result.feed.entries[i];

				//出力内容にタイトルを入れる
				htmlstr += '
<h3 class="posttitle"><a href="' + entry.link + '">' + entry.title + '</a></h3>
';

				//出力内容に日付けを入れる
				htmlstr += '
' + entry.publishedDate + '
';
				
			}
			
			
			//HTML内のdiv#feedListの中に出力
			container.innerHTML = htmlstr; 
			
		}

	});


	

}

//HTMLファイルが読み込まれたときに上記のfunction initializeのスクリプトを実行
google.setOnLoadCallback(initialize); 
// ]]&gt;
</script>
<h2></h2>
<p>こんちわ、今日はよくサイトのトップとかに他のブログの最新のタイトル表示させたりするRSS情報の取得をやってみましょう。</p>
<p>&nbsp;</p>
<p>多くのブログでは最新の情報をRSSという形で外部に向けて発信しています。<br /> それを取ってきて自分のサイトに表示させる、という事です。</p>
<p>&nbsp;</p>
<p>PHPが使えれば取得が結構簡単なのですが、サーバーによってPHPが使えなかったりするので、今回はGoogleが提供しているサービスを使ってJavaScriptでやってみます。</p>
<p><br /></p>
<p>HTML内に以下を記述</p>
<p>&nbsp;</p>
<p><strong>HTML(body内)</strong></p>
<pre class="brush: xml; title: ; notranslate">
&lt;div id=&quot;feedList&quot;&gt;&lt;/div&gt;
</pre><br /><br />
<p>そして核になるjavascriptをHTML(HEAD内)に以下を記述</p>
<p><strong>HTML(head内)</strong></p>
<pre class="brush: xml; title: ; notranslate">
&lt;!-- apiを読み込む --&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;https://www.google.com/jsapi&quot;&gt;&lt;/script&gt;

&lt;!-- RSSを読み込んで、出力するスクリプト --&gt;
&lt;script type=&quot;text/javascript&quot;&gt;

//APIのメジャーバージョン(安定版)を指定
google.load(&quot;feeds&quot;, &quot;1&quot;);

function initialize() {

	//ブログなどのURL設定
	var feed = new google.feeds.Feed(&quot;https://taneppa.net/feed/&quot;);

	// 読み込み件数を設定
	var postcount = 3;

	//出力内容を空っぽに初期化
	var htmlstr = &quot;&quot;; 

	//HTML内のdiv#feedListを取得
	var container = document.getElementById(&quot;feedList&quot;); 

	feed.load(function (result){

		if (!result.error){

			for (var i = 0; i &lt; postcount; i++) {
				//記事を一つ取得
				var entry = result.feed.entries[i];

				//出力内容にタイトルを入れる
				htmlstr += '&lt;h3 class=&quot;posttitle&quot;&gt;&lt;a href=&quot;' + entry.link + '&quot;&gt;' + entry.title + '&lt;/a&gt;&lt;/h3&gt;';

				//出力内容に日付けを入れる
				htmlstr += '&lt;p class=&quot;postdate&quot;&gt;' + entry.publishedDate + '&lt;/p&gt;';
				
			}
			
			
			//HTML内のdiv#feedListの中に出力
			container.innerHTML = htmlstr; 
			
		}

	});


	

}

//HTMLファイルが読み込まれたときに上記のfunction initializeのスクリプトを実行
google.setOnLoadCallback(initialize); 

&lt;/script&gt;
</pre><br /><br />
<p>■//ブログなどのURL設定　のところ”https://taneppa.net/feed/”の代わりに自分が表示させたいブログのRSSを記入します。<br /> たねっぱでいうと、グローバルナビにあるTwitterアイコン横の「電波出てるみたいなボタン」（Twitterのマークの横）のリンク先URLを使用します。<br /> 右クリックで、Firefoxの場合は「リンクのURLをコピー」、IEの場合は「ショートカットコピー」<br /> ■//読み込み件数を設定　のところで表示する件数を指定します</p>
<p>なんか、パッと見たところよくわからんスクリプト…って思うかもしれません。<br /> しかし、よくコメント部分を見てみるとやってる事は簡単です。<br /> スクリプトを見ればわかりますが、タイトルはh3タグ、日付はpタグで囲われています。なのでCSSで見た目も変えれますね。</p>
<p>&nbsp;</p>
<p><strong>★出力結果★</strong>タイトルと日付が表示されます↓</p>
<p>&nbsp;</p>
<div id="feedList"></div>
<p>もっと、記事の本文とかも表示したいって方は以下サイトを参考にしてください。(日付表記の変更などもあります)</p>
<p>&nbsp;</p>
<p><strong>参考：Google AJAX Feed API入門</strong></p>
<p><a href="http://www.ajaxtower.jp/googleajaxfeed/" target="_blank">http://www.ajaxtower.jp/googleajaxfeed/</a></p>
<p>&nbsp;</p>
<p>今回は簡易に書いてますが本当は細かく書いた方が良いです。（エラーが出たときなど）。全部↑の参考サイトに書いてますので、もっとちゃんと勉強したい方は見てください。</p>
<p>&nbsp;</p>
<p>関連記事：<a href="https://taneppa.net/rssfeed_php/">PHP版！外部ブログのタイトルを自分のサイトに表示させる</a></p>
<style><!--
div#feedList {
	padding:10px;
	background-color:#E5F6F7;
}
span.smallfont{
color:red;
font-size:75%;}
--></style>]]></content:encoded>
			<wfw:commentRss>https://taneppa.net/rssfeed_js/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
