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

質問編集履歴

2

より具体的なコードを追加で提示させていただきました

2019/10/25 03:18

投稿

pegy
pegy

スコア245

title CHANGED
File without changes
body CHANGED
@@ -38,4 +38,151 @@
38
38
  }
39
39
  })
40
40
  })
41
+ ```
42
+
43
+ 以下の通り、具体的なコードを開示させていただきます。
44
+ $('.ckClose').on('click',function()の箇所が上記の具体的な質問の箇所です。私のGoogle Chrome(バージョン: 77.0.3865.120(Official Build) (64 ビット))のDeveloper Tool上では特段のエラーは出力されていません。
45
+
46
+ ```html
47
+ <div id="map" class="web_map"></div>
48
+
49
+ <div class="btnWrapper">
50
+ <div id="" class="btn displayIcon ckOpen">X</div
51
+ <div id="" class="btn displayIcon ckClose">X</div>
52
+ </div>
53
+ ```
54
+
55
+ ```Javascript
56
+ var map;
57
+ var mObj ={};
58
+ var marker = {};
59
+ var infoWindow = {};
60
+
61
+
62
+ mObj.k1=
63
+ [
64
+ {
65
+ lat:35.639014,
66
+ lng:139.638741,
67
+ icon:"./z_icon/1_k.png"
68
+ }
69
+ ];
70
+
71
+ mObj.c1=
72
+ [
73
+ {
74
+ lat:35.631350,
75
+ lng:139.646900,
76
+ icon:"./z_icon/1_c.png"
77
+ }
78
+ ];
79
+
80
+ mObj.k2=
81
+ [
82
+ {
83
+ lat:35.562416,
84
+ lng:139.614346,
85
+ icon:"./z_icon/2_k.png"
86
+ },
87
+ {
88
+ lat:35.757992,
89
+ lng:139.827880,
90
+ icon:"./z_icon/2_k.png"
91
+ }
92
+ ];
93
+
94
+ mObj.c3=
95
+ [
96
+ {
97
+ lat:35.591418,
98
+ lng:139.546924,
99
+ icon:"./z_icon/3_c.png"
100
+ }
101
+ ];
102
+
103
+ // console.log(mObj);
104
+
105
+ function initialize() {
106
+ var latlng = new google.maps.LatLng(35.680552, 139.766923);
107
+ var opts = {
108
+ zoom: 11,
109
+ center: latlng,
110
+ mapTypeId: google.maps.MapTypeId.ROADMAP
111
+ };
112
+ map = new google.maps.Map(document.getElementById("map"), opts);
113
+
114
+ var mObjKeys=Object.keys(mObj);
115
+ var keyLen=mObjKeys.length;
116
+
117
+ for (var i = 0; i < keyLen; i++) {
118
+ for (var j = 0; j < mObj[mObjKeys[i]].length; j++) {
119
+ if(j==0){
120
+ marker[mObjKeys[i]]={[j]:new google.maps.Marker({
121
+ position: new google.maps.LatLng({lat:mObj[mObjKeys[i]][j]['lat'],lng:mObj[mObjKeys[i]][j]['lng']}),
122
+ map: map,
123
+ icon:new google.maps.MarkerImage(mObj[mObjKeys[i]][j]['icon'],null,null,null,new google.maps.Size(41, 41))
124
+ })
125
+ }
126
+ infoWindow[mObjKeys[i]]={[j]: new google.maps.InfoWindow({ // 吹き出しの追加
127
+ content:mObj[mObjKeys[i]][j]['contents']
128
+ })
129
+ }
130
+
131
+ } else if(j>0){
132
+ marker[mObjKeys[i]][j]=new google.maps.Marker({
133
+ position: new google.maps.LatLng({lat:mObj[mObjKeys[i]][j]['lat'],lng:mObj[mObjKeys[i]][j]['lng']}),
134
+ map: map,
135
+ icon:new google.maps.MarkerImage(mObj[mObjKeys[i]][j]['icon'],null,null,null,new google.maps.Size(41, 41))
136
+ });
137
+ infoWindow[mObjKeys[i]][j]= new google.maps.InfoWindow({ // 吹き出しの追加
138
+ content:mObj[mObjKeys[i]][j]['contents']
139
+ });
140
+ }
141
+ markerEvent(i,j)
142
+ function markerEvent(i,j){
143
+ marker[mObjKeys[i]][j].addListener('click', function() { // マーカーをクリックしたとき
144
+ infoWindow[mObjKeys[i]][j].open(map,marker[mObjKeys[i]][j]); // 吹き出しの表示
145
+ });
146
+ }
147
+ }
148
+ }
149
+ }
150
+
151
+ console.log(infoWindow);
152
+ /*
153
+ {
154
+ c1:{0:_.Sf}
155
+ c3:{0:_.Sf}
156
+ k1:{0:_.Sf}
157
+ k2:{0:_.Sf,1:_.Sf}
158
+ }
159
+ */
160
+ /*ckCloseボタンによりすべてのMarkerを削除する*/
161
+ $(function(){
162
+ $('.ckClose').on('click',function(){
163
+ var markerKeys=Object.keys(marker);
164
+ var markerLen=markerKeys.length;
165
+ for (var i = 0; i < markerLen; i++) {
166
+ for (var j = 0, innerLen=Object.keys(marker[markerKeys[i]]).length; j <innerLen ; j++) {
167
+ marker[markerKeys[i]][j].setMap(null);
168
+ infoWindow[markerKeys[i]][j].close();//ここが動作しない
169
+ infoWindow["k2"][0].close();//これは動作する
170
+       console.log(infoWindow[markerKeys[i]][j]==infoWindow["k2"][0])//["k2"][0]のループの時にはtrueを返す
171
+ }
172
+ }
173
+ })
174
+ })
175
+
176
+ /*ckOpenボタンによりすべてのMarkerを表示する*/
177
+ $(function(){
178
+ $('.ckOpen').on('click',function(){
179
+ var markerKeys=Object.keys(marker);
180
+ var markerLen=markerKeys.length;
181
+ for (var i = 0; i < markerLen; i++) {
182
+ for (var j = 0, innerLen=Object.keys(marker[markerKeys[i]]).length; j <innerLen ; j++) {
183
+ marker[markerKeys[i]][j].setMap(map);
184
+ }
185
+ }
186
+ })
187
+ })
41
188
  ```

1

曖昧な表現を訂正しました

2019/10/25 03:18

投稿

pegy
pegy

スコア245

title CHANGED
File without changes
body CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  原因を探るべく具体的に試しに一つ
4
4
  infoWindow["k2"][0].close();//これは消える
5
- を実行したところk2の要素は非表示になることがわかりました。
5
+ を実行したところ["k2"][0]の要素は非表示になることがわかりました。
6
6
 
7
7
  ただし、
8
8
  infoWindow[markerKeys[i]][j].close();//これは消えない