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

質問編集履歴

2

更新

2017/01/02 05:45

投稿

oyatsu8
oyatsu8

スコア97

title CHANGED
File without changes
body CHANGED
@@ -45,13 +45,13 @@
45
45
  : 'Hover over a state');
46
46
  };
47
47
 
48
+ アドバイス頂けたら助かります。
48
49
 
49
50
 
50
- アドバイス頂けら助かり
51
+ その後、下記のようにしてみましが、contrilパネルのinfo,legendが表示出来ていせん
51
52
 
52
53
 
53
-
54
- ```jaavscript,leaflet
54
+ ```javascript
55
55
  <!DOCTYPE html>
56
56
  <html>
57
57
  <head>
@@ -145,16 +145,32 @@
145
145
 
146
146
  //info start
147
147
  var info = L.control();
148
+ // info.onAdd = function (map) {
149
+ // this._div = L.DomUtil.create('div', 'info');
150
+ // this.update();
151
+ // return this._div;
152
+ // };
153
+ // info.update = function (props) {
154
+ // this._div.innerHTML = '<h4>US Population Density</h4>' + (props ?
155
+ // '<b>' + props.name + '</b><br />' + props.density + ' people / mi<sup>2</sup>'
156
+ // : 'Hover over a state');
157
+ // };
158
+
159
+ var title="test-title";
160
+ var property = "test-property";
161
+
148
162
  info.onAdd = function (map) {
149
- this._div = L.DomUtil.create('div', 'info');
163
+ this._div = L.DomUtil.create('div', 'info');
150
- this.update();
164
+ this.update();
151
- return this._div;
165
+ return this._div;
152
- };
166
+ };
153
- info.update = function (props) {
167
+ info.update = function (props) {
154
- this._div.innerHTML = '<h4>US Population Density</h4>' + (props ?
168
+ this._div.innerHTML = '<h4>'+ title +'</h4>' + (props ?
155
- '<b>' + props.name + '</b><br />' + props.density + ' people / mi<sup>2</sup>'
169
+ '<b>' + props.name + '</b><br />' + property + ' people / mi<sup>2</sup>'
156
- : 'Hover over a state');
170
+ : 'Hover over a state');
157
- };
171
+ };
172
+
173
+
158
174
  // info.addTo(map);
159
175
  //info end
160
176
 
@@ -226,23 +242,46 @@
226
242
  style: style,
227
243
  onEachFeature: onEachFeature
228
244
  }).addTo(choropleth01);
229
- info.addTo(choropleth01);
230
- legend.addTo(choropleth01);
231
245
 
232
-
233
-
234
246
  geojson = L.geoJson(statesData, {
235
247
  style: style,
236
248
  onEachFeature: onEachFeature
237
249
  }).addTo(choropleth02);
250
+
251
+
252
+ var overlay_name = "name_test";
253
+ var overlay_type = "type_test";
254
+
255
+ map.on('overlayadd overlayremove baseLayerchange', function(a) {
256
+ overlay_name = a.name;
257
+ overlay_type = a.type;
258
+
259
+ console.log("overlay_type :");
260
+ console.log(overlay_type);
261
+ });
262
+
263
+ if(overlay_name==choropleth01 || overlay_type == overlayadd){
264
+ title="title01";
265
+ property = feature.properties.density;
266
+
267
+ info.addTo(choropleth01);
268
+ legend.addTo(choropleth01);
269
+
270
+ }else if(overlay_name==choropleth02 || overlay_type == overlayadd){
271
+ title="title02";
272
+ property = feature.properties.density02;
273
+
238
274
  info.addTo(choropleth02);
239
275
  legend.addTo(choropleth02);
276
+ }
240
277
 
278
+ console.log("title: ");
279
+ console.log(title);
241
280
 
281
+ console.log("property: ");
282
+ console.log(property);
242
283
 
243
284
 
244
-
245
-
246
285
  map.attributionControl.addAttribution('Population data &copy; <a href="http://census.gov/">US Census Bureau</a>');
247
286
 
248
287
  </script>
@@ -251,4 +290,5 @@
251
290
 
252
291
  </body>
253
292
  </html>
293
+
254
294
  ```

1

質問に追記しました

2017/01/02 05:45

投稿

oyatsu8
oyatsu8

スコア97

title CHANGED
File without changes
body CHANGED
@@ -9,6 +9,44 @@
9
9
  としても、なぜか出来ません。
10
10
  チェックボックスの場合分けをしてしたらなんとか出来るのですが、コードが多くなりすぎるので
11
11
  どうにかしたいとしています、引数等の使い分けがまだ理解し切れていないのもあるのですが、、
12
+
13
+ 特に知りたい事は例えば下記の用な場合に、
14
+ ```javascript
15
+ info.onAdd = function (map) {
16
+ this._div = L.DomUtil.create('div', 'info');
17
+ this.update();
18
+ return this._div;
19
+ };
20
+ info.update = function (props) {
21
+ this._div.innerHTML = '<h4>US Population Density</h4>' + (props ?
22
+ '<b>' + props.name + '</b><br />' + props.density + ' people / mi<sup>2</sup>'
23
+ : 'Hover over a state');
24
+ };
25
+
26
+ ```
27
+ '<h4>US Population Density</h4>'(タイトル)と、
28
+ props.density(プロパティ)を
29
+ 場合によってかき分けたいときの書き方です。
30
+
31
+ function (map,title,name,property)
32
+ などとして
33
+
34
+ var title="test-title";
35
+ var property = "test-property";
36
+
37
+ info.onAdd = function (map) {
38
+ this._div = L.DomUtil.create('div', 'info');
39
+ this.update();
40
+ return this._div;
41
+ };
42
+ info.update = function (props) {
43
+ this._div.innerHTML = '<h4>'+ title +'</h4>' + (props ?
44
+ '<b>' + props.name + '</b><br />' + property + ' people / mi<sup>2</sup>'
45
+ : 'Hover over a state');
46
+ };
47
+
48
+
49
+
12
50
  アドバイス頂けたら助かります。
13
51
 
14
52