質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

1971閲覧

GoogleMap上に透過画像を貼りたい

1377

総合スコア1

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2021/01/22 06:05

前提・実現したいこと

Google Mapに貼り付けた画像だけを透過させて後ろにMapが重なるようにしたい。

発生している問題・エラーメッセージ

エラーはないが、 現状のコードだと透過させようとすると、Mapも透過されてしまっている。

該当のソースコード

HTML/JS

1<!DOCTYPE html> 2<html lang="ja"> 3<link rel="stylesheet" href="style.css"> 4 <head> 5 <meta charset="utf-8"> 6 <title>Google Maps API サンプル</title> 7 </head> 8 <body> 9 <p>東京都市の古地図です。</p> 10 11 <!--オーバーレイ画像 ボタンクリック 表示・非表示--> 12 <div id = "floating-panel"> 13 <input onclick = "removeOverlay();" type="button" value="古地図の非表示" /> 14 <input onclick = "addOverlay();" type="button" value="古地図の表示" /> 15 </div> 16 17 <div style="margin:5px;"> 18 <input type="radio" name="rdo" value="0">0% 19 <input type="radio" name="rdo" value="0.3">30% 20 <input type="radio" name="rdo" value="0.5">50% 21 <input type="radio" name="rdo" value="0.8">80% 22 <input type="radio" name="rdo" value="1.0">100% 23 <input type="button" value="ボタン" onclick="touka();" style="width:100px;margin-left:10px;"> 24 </div> 25 <div id="historicalOverlay"> 26 27 </div> 28 29 30 <div id="map" style="width:100%; height:500px"></div> 31 32 33 <script type="text/javascript"> 34 /*オーバーレイ画像の座標*/ 35 var imageBounds = { 36 north: 35.6983223, 37 south: 35.658584, 38 east: 139.7730186, 39 west: 139.7454316, 40 }; 41 historicalOverlay = new google.maps.GroundOverlay( 42 //画像のURL 43 "", 44 imageBounds 45 ); 46 historicalOverlay.setMap(map); 47 } 48/*1*/ 49 function initMap() { 50 var opts = { 51 zoom:5, 52 center: new google.maps.LatLng(35.6809591,139.7673068) 53 }; 54 var map = new google.maps.Map(document.getElementById("map"), opts); 55 } 56 let historicalOverlay; 57/*2*/ 58 function initMap() { 59 map = new google.maps.Map(document.getElementById("map"), { 60 zoom: 13, 61 center: { lat: 35.6809591, lng: 139.7673068 }, 62 }); 63 64 var obj = document.getElementById("historicalOverlay"); 65 66/*透過率のコード*/ 67 function touka(){ 68 69 var radios = document.getElementsByName("rdo"); 70 var result; 71 for(var i=0; i<radios.length; i++){ 72 if (radios[i].checked) { 73 result = radios[i].value; 74 break; 75 } 76 } 77 document.getElementById("map").style.opacity = parseFloat(result); 78 } 79 80 81/*functionでオーバーレイの画像を表示・非表示*/ 82 function addOverlay() { 83 historicalOverlay.setMap(map); 84 } 85 function removeOverlay(){ 86 historicalOverlay.setMap(null); 87 } 88 89 90 </script> 91<!--APIの指定--> 92 <script async defer 93 src="API"> 94 </script> 95 </body> 96</html>

補足情報(FW/ツールのバージョンなど)

APIと画像のURLは念のため隠しています。
GoogleAPIを使っています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ドキュメントを見たところ、普通にオプションがあるようです。

GroundOverlayOptions interface | Image overlays  |  Maps JavaScript API  |  Google Developers

投稿2021/01/22 06:43

Lhankor_Mhy

総合スコア36960

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

1377

2021/01/22 06:51

function touka(){ var radios = document.getElementsByName("rdo"); var result; for(var i=0; i<radios.length; i++){ if (radios[i].checked) { result = radios[i].value; break; } } document.getElementById("map").style.opacity = parseFloat(result); } この部分のコードでopacityは使用しているのですが、全体が透明化してしまうので、どこが誤っているのか分かれば詳細に指摘お願いできますでしょうか。
Lhankor_Mhy

2021/01/22 07:37

あ、すみません、よく読んでいませんでした。 どこが誤っているのかを知りたいのですね。 document.getElementById("map").style.opacity = parseFloat(result); ↑ここだと思います。
1377

2021/01/27 04:29

解決しました!ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問