質問編集履歴

2

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

2019/10/25 03:18

投稿

pegy
pegy

スコア243

test CHANGED
File without changes
test CHANGED
@@ -79,3 +79,297 @@
79
79
  })
80
80
 
81
81
  ```
82
+
83
+
84
+
85
+ 以下の通り、具体的なコードを開示させていただきます。
86
+
87
+ $('.ckClose').on('click',function()の箇所が上記の具体的な質問の箇所です。私のGoogle Chrome(バージョン: 77.0.3865.120(Official Build) (64 ビット))のDeveloper Tool上では特段のエラーは出力されていません。
88
+
89
+
90
+
91
+ ```html
92
+
93
+ <div id="map" class="web_map"></div>
94
+
95
+
96
+
97
+ <div class="btnWrapper">
98
+
99
+ <div id="" class="btn displayIcon ckOpen">X</div
100
+
101
+ <div id="" class="btn displayIcon ckClose">X</div>
102
+
103
+ </div>
104
+
105
+ ```
106
+
107
+
108
+
109
+ ```Javascript
110
+
111
+ var map;
112
+
113
+ var mObj ={};
114
+
115
+ var marker = {};
116
+
117
+ var infoWindow = {};
118
+
119
+
120
+
121
+
122
+
123
+ mObj.k1=
124
+
125
+ [
126
+
127
+ {
128
+
129
+ lat:35.639014,
130
+
131
+ lng:139.638741,
132
+
133
+ icon:"./z_icon/1_k.png"
134
+
135
+ }
136
+
137
+ ];
138
+
139
+
140
+
141
+ mObj.c1=
142
+
143
+ [
144
+
145
+ {
146
+
147
+ lat:35.631350,
148
+
149
+ lng:139.646900,
150
+
151
+ icon:"./z_icon/1_c.png"
152
+
153
+ }
154
+
155
+ ];
156
+
157
+
158
+
159
+ mObj.k2=
160
+
161
+ [
162
+
163
+ {
164
+
165
+ lat:35.562416,
166
+
167
+ lng:139.614346,
168
+
169
+ icon:"./z_icon/2_k.png"
170
+
171
+ },
172
+
173
+ {
174
+
175
+ lat:35.757992,
176
+
177
+ lng:139.827880,
178
+
179
+ icon:"./z_icon/2_k.png"
180
+
181
+ }
182
+
183
+ ];
184
+
185
+
186
+
187
+ mObj.c3=
188
+
189
+ [
190
+
191
+ {
192
+
193
+ lat:35.591418,
194
+
195
+ lng:139.546924,
196
+
197
+ icon:"./z_icon/3_c.png"
198
+
199
+ }
200
+
201
+ ];
202
+
203
+
204
+
205
+ // console.log(mObj);
206
+
207
+
208
+
209
+ function initialize() {
210
+
211
+ var latlng = new google.maps.LatLng(35.680552, 139.766923);
212
+
213
+ var opts = {
214
+
215
+ zoom: 11,
216
+
217
+ center: latlng,
218
+
219
+ mapTypeId: google.maps.MapTypeId.ROADMAP
220
+
221
+ };
222
+
223
+ map = new google.maps.Map(document.getElementById("map"), opts);
224
+
225
+
226
+
227
+ var mObjKeys=Object.keys(mObj);
228
+
229
+ var keyLen=mObjKeys.length;
230
+
231
+
232
+
233
+ for (var i = 0; i < keyLen; i++) {
234
+
235
+ for (var j = 0; j < mObj[mObjKeys[i]].length; j++) {
236
+
237
+ if(j==0){
238
+
239
+ marker[mObjKeys[i]]={[j]:new google.maps.Marker({
240
+
241
+ position: new google.maps.LatLng({lat:mObj[mObjKeys[i]][j]['lat'],lng:mObj[mObjKeys[i]][j]['lng']}),
242
+
243
+ map: map,
244
+
245
+ icon:new google.maps.MarkerImage(mObj[mObjKeys[i]][j]['icon'],null,null,null,new google.maps.Size(41, 41))
246
+
247
+ })
248
+
249
+ }
250
+
251
+ infoWindow[mObjKeys[i]]={[j]: new google.maps.InfoWindow({ // 吹き出しの追加
252
+
253
+ content:mObj[mObjKeys[i]][j]['contents']
254
+
255
+ })
256
+
257
+ }
258
+
259
+
260
+
261
+ } else if(j>0){
262
+
263
+ marker[mObjKeys[i]][j]=new google.maps.Marker({
264
+
265
+ position: new google.maps.LatLng({lat:mObj[mObjKeys[i]][j]['lat'],lng:mObj[mObjKeys[i]][j]['lng']}),
266
+
267
+ map: map,
268
+
269
+ icon:new google.maps.MarkerImage(mObj[mObjKeys[i]][j]['icon'],null,null,null,new google.maps.Size(41, 41))
270
+
271
+ });
272
+
273
+ infoWindow[mObjKeys[i]][j]= new google.maps.InfoWindow({ // 吹き出しの追加
274
+
275
+ content:mObj[mObjKeys[i]][j]['contents']
276
+
277
+ });
278
+
279
+ }
280
+
281
+ markerEvent(i,j)
282
+
283
+ function markerEvent(i,j){
284
+
285
+ marker[mObjKeys[i]][j].addListener('click', function() { // マーカーをクリックしたとき
286
+
287
+ infoWindow[mObjKeys[i]][j].open(map,marker[mObjKeys[i]][j]); // 吹き出しの表示
288
+
289
+ });
290
+
291
+ }
292
+
293
+ }
294
+
295
+ }
296
+
297
+ }
298
+
299
+
300
+
301
+ console.log(infoWindow);
302
+
303
+ /*
304
+
305
+ {
306
+
307
+ c1:{0:_.Sf}
308
+
309
+ c3:{0:_.Sf}
310
+
311
+ k1:{0:_.Sf}
312
+
313
+ k2:{0:_.Sf,1:_.Sf}
314
+
315
+ }
316
+
317
+ */
318
+
319
+ /*ckCloseボタンによりすべてのMarkerを削除する*/
320
+
321
+ $(function(){
322
+
323
+ $('.ckClose').on('click',function(){
324
+
325
+ var markerKeys=Object.keys(marker);
326
+
327
+ var markerLen=markerKeys.length;
328
+
329
+ for (var i = 0; i < markerLen; i++) {
330
+
331
+ for (var j = 0, innerLen=Object.keys(marker[markerKeys[i]]).length; j <innerLen ; j++) {
332
+
333
+ marker[markerKeys[i]][j].setMap(null);
334
+
335
+ infoWindow[markerKeys[i]][j].close();//ここが動作しない
336
+
337
+ infoWindow["k2"][0].close();//これは動作する
338
+
339
+       console.log(infoWindow[markerKeys[i]][j]==infoWindow["k2"][0])//["k2"][0]のループの時にはtrueを返す
340
+
341
+ }
342
+
343
+ }
344
+
345
+ })
346
+
347
+ })
348
+
349
+
350
+
351
+ /*ckOpenボタンによりすべてのMarkerを表示する*/
352
+
353
+ $(function(){
354
+
355
+ $('.ckOpen').on('click',function(){
356
+
357
+ var markerKeys=Object.keys(marker);
358
+
359
+ var markerLen=markerKeys.length;
360
+
361
+ for (var i = 0; i < markerLen; i++) {
362
+
363
+ for (var j = 0, innerLen=Object.keys(marker[markerKeys[i]]).length; j <innerLen ; j++) {
364
+
365
+ marker[markerKeys[i]][j].setMap(map);
366
+
367
+ }
368
+
369
+ }
370
+
371
+ })
372
+
373
+ })
374
+
375
+ ```

1

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

2019/10/25 03:18

投稿

pegy
pegy

スコア243

test CHANGED
File without changes
test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  infoWindow["k2"][0].close();//これは消える
8
8
 
9
- を実行したところk2の要素は非表示になることがわかりました。
9
+ を実行したところ["k2"][0]の要素は非表示になることがわかりました。
10
10
 
11
11
 
12
12