teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

追記

2018/10/31 00:23

投稿

colling
colling

スコア798

answer CHANGED
@@ -14,6 +14,7 @@
14
14
  `if(document.getElementById("map1"))`で、目的の`id`があるかどうかをチェックできます。
15
15
 
16
16
  下記の例では`document.write`はあまり必要性を感じないので省いています。
17
+    --追記-- この場合、`document.write`を省いたので、`api-javascript-test.js`の呼び出しは、`API`呼び出しよりも**前であれば**、`<head>`の中でも`<body>`の中でも構いません。
17
18
  ```html
18
19
  <!DOCTYPE html>
19
20
  <html>

3

修正

2018/10/31 00:23

投稿

colling
colling

スコア798

answer CHANGED
@@ -35,7 +35,7 @@
35
35
 
36
36
  <script type="text/javascript" src="api-javascript-test.js">
37
37
  </script>
38
- <script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBfVbazyiNc3DGpBS-C0Wem9VSRTA8LgXU&callback=initMap"></script>
38
+ <script src="https://maps.googleapis.com/maps/api/js?key=hoge&callback=initMap"></script>
39
39
  </body>
40
40
  </html>
41
41
  ```

2

追記

2018/10/30 23:54

投稿

colling
colling

スコア798

answer CHANGED
@@ -7,4 +7,112 @@
7
7
 
8
8
  そのあたりを踏まえて、スクリプトを組み直してみましょう。
9
9
  ---追記 ---
10
- APIが呼ばれた後、`callback=initMap`で`initMap()`を呼び出していますので、`<div>`の配列も、`initMap()`の中で宣言していると、タイミングがNGですね。
10
+ APIが呼ばれた後、`callback=initMap`で`initMap()`を呼び出していますので、`<div>`の配列も、`initMap()`の中で宣言していると、タイミングがNGですね。
11
+
12
+
13
+ --- 追記 ---
14
+ `if(document.getElementById("map1"))`で、目的の`id`があるかどうかをチェックできます。
15
+
16
+ 下記の例では`document.write`はあまり必要性を感じないので省いています。
17
+ ```html
18
+ <!DOCTYPE html>
19
+ <html>
20
+ <head>
21
+ <meta charset="UTF-8">
22
+ <title>google API test</title>
23
+ <style type="text/css">
24
+
25
+ </style>
26
+
27
+ </head>
28
+ <body>
29
+ <p>テスト</p>
30
+
31
+ <div id="map1" style = "width: 500px ; height:300px"></div>
32
+ <div id="map3" style = "width: 500px ; height:300px"></div>
33
+ <div id="map5" style = "width: 500px ; height:300px"></div>
34
+
35
+
36
+ <script type="text/javascript" src="api-javascript-test.js">
37
+ </script>
38
+ <script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBfVbazyiNc3DGpBS-C0Wem9VSRTA8LgXU&callback=initMap"></script>
39
+ </body>
40
+ </html>
41
+ ```
42
+
43
+ api-javascript-test.js
44
+ ```javascript
45
+ function initMap(){
46
+ // JR東京駅 map1
47
+ if(document.getElementById("map1")){//id="map1" があれば 処理を通る
48
+ var opts1 = {
49
+ zoom: 15,
50
+ center: new google.maps.LatLng(35.681661 , 139.767314),
51
+ };
52
+ var map1 = new google.maps.Map(document.getElementById("map1"), opts1);
53
+
54
+ var mnum1 = new google.maps.LatLng(35.681661 , 139.767314);
55
+ var marker1 = new google.maps.Marker({
56
+ position: mnum1,
57
+ map: map1
58
+ });
59
+ }
60
+ // 新国立競技場 map2
61
+ if(document.getElementById("map2")){//id="map2" があれば 処理を通る
62
+ var opts2 = {
63
+ zoom: 15,
64
+ center: new google.maps.LatLng(35.678356 , 139.715482)
65
+ };
66
+ var map2 = new google.maps.Map(document.getElementById("map2"), opts2);
67
+
68
+ var mnum2 = new google.maps.LatLng(35.678356 , 139.715482);
69
+ var marker2 = new google.maps.Marker({
70
+ position: mnum2,
71
+ map: map2
72
+ });
73
+ }
74
+ // 東京体育館 map3
75
+ if(document.getElementById("map3")){//id="map3" があれば 処理を通る
76
+ var opts3 = {
77
+ zoom: 15,
78
+ center: new google.maps.LatLng(35.67948 , 139.712092)
79
+ };
80
+ var map3 = new google.maps.Map(document.getElementById("map3"), opts3);
81
+
82
+ var mnum3 = new google.maps.LatLng(35.67948 , 139.712092);
83
+ var marker3 = new google.maps.Marker({
84
+ position: mnum3,
85
+ map: map3
86
+ });
87
+ }
88
+ // 国立代々木競技場
89
+ if(document.getElementById("map4")){//id="map4" があれば 処理を通る
90
+ var opts4 = {
91
+ zoom: 15,
92
+ center: new google.maps.LatLng(35.667868 , 139.700438)
93
+ };
94
+ var map4 = new google.maps.Map(document.getElementById("map4"), opts4);
95
+
96
+ var mnum4 = new google.maps.LatLng(35.667868 , 139.700438);
97
+ var marker4 = new google.maps.Marker({
98
+ position: mnum4,
99
+ map: map4
100
+ });
101
+ }
102
+
103
+ // 日本武道館
104
+ if(document.getElementById("map5")){//id="map5" があれば 処理を通る
105
+ var opts5 = {
106
+ zoom: 15,
107
+ center: new google.maps.LatLng(35.693475 , 139.75006)
108
+ };
109
+ var map5 = new google.maps.Map(document.getElementById("map5"), opts5);
110
+
111
+ var mnum5 = new google.maps.LatLng(35.693475 , 139.75006);
112
+ var marker5 = new google.maps.Marker({
113
+ position: mnum5,
114
+ map: map5
115
+ });
116
+ }
117
+ }
118
+ ```

1

追記

2018/10/30 23:52

投稿

colling
colling

スコア798

answer CHANGED
@@ -5,4 +5,6 @@
5
5
 
6
6
  また、複数の`<div>`の中から表示させたいものを`document.write()`で書くというアイデアのようですが、これも、上と同じ理由で、`id=“map1”`が歯抜けになっていたら、その部分でエラーになり、スクリプトが停止しています。
7
7
 
8
- そのあたりを踏まえて、スクリプトを組み直してみましょう。
8
+ そのあたりを踏まえて、スクリプトを組み直してみましょう。
9
+ ---追記 ---
10
+ APIが呼ばれた後、`callback=initMap`で`initMap()`を呼び出していますので、`<div>`の配列も、`initMap()`の中で宣言していると、タイミングがNGですね。