Leaflet: ํƒ€์ผ โ€‹โ€‹์š”์ฒญ์— ๋Œ€ํ•œ ํ—ค๋” ์ •๋ณด๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์— ๋งŒ๋“  2013๋…„ 10์›” 11์ผ  ยท  13์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: Leaflet/Leaflet

ํ† ํฐ์„ ์ „๋‹ฌํ•ด์•ผ ํ•˜๋Š” ํƒ€์ผ ์„œ๋ฒ„์— ์•ก์„ธ์Šคํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์š”์ฒญ์ด ์ด๋ฃจ์–ด์ง€๊ธฐ ์ „์— ํ—ค๋”์— ๋ฌด์–ธ๊ฐ€๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋„๋ก ํƒ€์ผ ์š”์ฒญ์„ ๊ฐ€๋กœ์ฑ„๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ? IE๋Š” ์ด๋ฒคํŠธ๋ฅผ ํ†ตํ•ด ์‚ฌ์ „ ํƒ€์ผ ์š”์ฒญ์„ ์ˆ˜์‹ ํ•˜๊ณ  ํ—ค๋”๋ฅผ ์—‰๋ง์œผ๋กœ ๋งŒ๋“ค๊ณ  ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@SunnyMittal ๋‚˜๋Š” ajax์— superagent๋ฅผ ์‚ฌ์šฉํ–ˆ๊ณ  ํ•„์š”์— ๋”ฐ๋ผ ๊ต์ฒดํ–ˆ์Šต๋‹ˆ๋‹ค.

L.TileLayer.WMS_Headers = L.TileLayer.WMS.extend({
  createTile(coords, done) {
    const url = this.getTileUrl(coords);
    const img = document.createElement('img');
    superagent
      .get(url)
      .set(โ€˜headerโ€™, โ€˜header valueโ€™)
      .responseType('blob')
      .then((response) => {
        img.src = URL.createObjectURL(response.body);
        done(null, img);
      });
    return img;
  }
});

L.tileLayer.wms_headers = (url, options) => new L.TileLayer.WMS_Headers(url, options);

๋ชจ๋“  13 ๋Œ“๊ธ€

ํ ... HTML์—์„œ ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‚˜์š”? ๋‚ด ๋ง์€, Leaflet์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜์ง€ ์•Š๊ณ  ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ์ž ์ •์˜ ํ—ค๋”๊ฐ€ ์žˆ๋Š” ์ด๋ฏธ์ง€๋ฅผ ๋กœ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ข‹์€ ์ง€์ ! ๋” ๊นŠ์ด ํŒŒ๊ณ ๋“ค๋ฉด ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋„ค ๋งž์Šต๋‹ˆ๋‹ค. AJAX ์š”์ฒญ์„ ํ•˜์ง€ ์•Š๋Š” ํ•œ ํ—ค๋”๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ API๋Š” ์•ก์„ธ์Šค ํ† ํฐ์„ ์ฟผ๋ฆฌ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ URL์— ์ „๋‹ฌํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋” ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ œ ๊ฒฝ์šฐ์—๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ํ•„์š”ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜๋„๋ก TileLayer๋ฅผ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ TileLayer(TileLayerQueryParam ๋˜๋Š” ๊ธฐํƒ€)์— ์ฟผ๋ฆฌ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ํ™•์žฅ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. TileLayer๊ฐ€ ์ฟผ๋ฆฌ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์„ ๊ฒฝํ—˜ํ•œ ์ ์ด ์žˆ์Šต๋‹ˆ๊นŒ? IE ํ™•์žฅ์€ ๊ดœ์ฐฎ์ง€๋งŒ ์ด๊ฒƒ์ด TileLayer์˜ ์ผ๋ถ€์—ฌ์•ผ ํ•˜๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ, ์ฟผ๋ฆฌ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ์‰ฝ์Šต๋‹ˆ๋‹ค. :)

์ฟผ๋ฆฌ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ๊ดœ์ฐฎ์ง€๋งŒ ์š”์ฒญ URL์— ํ† ํฐ์ด ๋…ธ์ถœ๋ฉ๋‹ˆ๋‹ค. OAuth 2.0์„ ๊ตฌํ˜„ํ•  ๋•Œ ์ œ์•ˆ์€ ํ—ค๋”์— ํ† ํฐ์„ ์“ฐ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ์ƒˆ๋กœ์šด pull ์š”์ฒญ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ธฐ๋Šฅ์€ OAuth 2.0์ด ์ธ์ฆ ํ—ค๋”๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

@zhenyanghua @rrameshkumar76 ์œ„์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด TileLayer ๋Š” img ํƒœ๊ทธ์ผ ๋ฟ์ด๋ฉฐ ์ด๋ฏธ์ง€ ํƒœ๊ทธ์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์ •์˜ ํ—ค๋”๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ GridLayer ๋ฅผ ํ™•์žฅํ•˜๋ฉด ์›ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํƒ€์ผ์„ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(AJAX ์‚ฌ์šฉ ๋“ฑ). Extending Leaflet, New Layers ํŠœํ† ๋ฆฌ์–ผ์—์„œ ์ด์™€ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ์ข‹์€ ์˜ˆ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ต๋ณ€๊ณผ ์„ค๋ช…์— ๋Œ€ํ•ด @perliedman ์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.
L.TileLayer.WMS๋ฅผ ํ™•์žฅํ•˜๊ณ  ํ—ค๋”๊ฐ€ ์žˆ๋Š” ํƒ€์ผ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด ajax ํ˜ธ์ถœ์„ ์ˆ˜ํ–‰ํ•œ createTile ๋ฉ”์„œ๋“œ๋ฅผ ์žฌ์ •์˜ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” Ramesh Kumar๋‹˜, ์ฐธ์กฐ์šฉ์œผ๋กœ ํ™•์žฅ๋œ WMS ํด๋ž˜์Šค๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

@SunnyMittal ๋‚˜๋Š” ajax์— superagent๋ฅผ ์‚ฌ์šฉํ–ˆ๊ณ  ํ•„์š”์— ๋”ฐ๋ผ ๊ต์ฒดํ–ˆ์Šต๋‹ˆ๋‹ค.

L.TileLayer.WMS_Headers = L.TileLayer.WMS.extend({
  createTile(coords, done) {
    const url = this.getTileUrl(coords);
    const img = document.createElement('img');
    superagent
      .get(url)
      .set(โ€˜headerโ€™, โ€˜header valueโ€™)
      .responseType('blob')
      .then((response) => {
        img.src = URL.createObjectURL(response.body);
        done(null, img);
      });
    return img;
  }
});

L.tileLayer.wms_headers = (url, options) => new L.TileLayer.WMS_Headers(url, options);

@rrameshkumar76 ๋„์›€์ด

@rrameshkumar76wser๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์•„์ฃผ ๊ฐ„๋‹จํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
๋‹น์‹ ์ด ๊ทธ๊ฒƒ์„ ์ฆ๊ธธ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์–ด๋Š ํ•˜๋‚˜์— ํ—ค๋”๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ ์žํ•˜๋Š” ๊ฒฝ์šฐ L.TileLayer ๋Œ€์‹  L.TileLayer.WMS ,์ด @ ticinum - ํ•ญ๊ณต ์šฐ์ฃผ์˜ ๊ฐ„๋‹จํ•œ ์ˆ˜์ •์— ์˜ํ•ด ๊ฐ€๋Šฅํ•˜๋‹ค ํ”Œ๋Ÿฌ๊ทธ์ธ . ๊ธฐ๋ณธ ํด๋ž˜์Šค๋ฅผ L.TileLayer.WMS ์—์„œ L.TileLayer ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ์ƒˆ ํด๋ž˜์Šค์™€ ํ•จ์ˆ˜์˜ ์ด๋ฆ„์„ ์ ์ ˆํ•˜๊ฒŒ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

์— ๋Œ€ํ•œ ๋‚ด๊ฐ€ ticinum - ํ•ญ๊ณต ์šฐ์ฃผ @ ์ˆ˜์ • ํ•œ์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ L.TileLayer ๋Œ€์‹  L.TileLayer.WMS ์—ฌ๊ธฐ : https://github.com/jaq316/leaflet-header/blob/master/index.js

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰