Leaflet: DivIconμ—μ„œ CSS μŠ€νƒ€μΌμ„ μ„€μ •ν•˜λŠ” κΈ°λŠ₯ μΆ”κ°€

에 λ§Œλ“  2017λ…„ 01μ›” 06일  Β·  3μ½”λ©˜νŠΈ  Β·  좜처: Leaflet/Leaflet

DivIcon을 λ§Œλ“€ λ•Œ DivIcon에 CSS μŠ€νƒ€μΌμ„ μ„€μ •ν•  수 있기λ₯Ό μ›ν•©λ‹ˆλ‹€.
ν˜„μž¬λ‘œμ„œλŠ” CSS 클래슀만 ꡬ성할 수 μžˆμŠ΅λ‹ˆλ‹€.

μ‚¬μš© 사둀:
마컀 μ•„μ΄μ½˜μ˜ λͺ¨μ–‘을 μ •μ˜ν•˜λŠ” CSS ν΄λž˜μŠ€κ°€ μžˆμ§€λ§Œ μ•„μ΄μ½˜μ˜ 색상은 λ°μ΄ν„°λ² μ΄μŠ€μ˜ 데이터λ₯Ό 기반으둜 λ™μ μœΌλ‘œ μ„€μ •λ˜λ―€λ‘œ CSS ν΄λž˜μŠ€μ—μ„œ ν•˜λ“œ μ½”λ”©ν•  수 μ—†μŠ΅λ‹ˆλ‹€.

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

이 κΈ°λŠ₯은 L.Marker 의 getElement() λ©”μ†Œλ“œλ‘œ λ‹€λ£° 수 μžˆμŠ΅λ‹ˆλ‹€. 예:

var marker = new L.Marker(myCenter, {
  icon: L.divIcon()
});
map.addLayer(marker);

marker.getElement().style.border = '5px dotted lime';
marker.getElement().style.width = '50px';
marker.getElement().style.height = '50px';

μž‘λ™ 예λ₯Ό μ°Έμ‘°ν•˜μ‹­μ‹œμ˜€.

이것은 λ‹€μ†Œ 극단적인 κ²½μš°μ΄λ―€λ‘œ L.DivIcon 클래슀λ₯Ό ν™•μž₯ν•˜μ—¬ μ‚¬μš©μž μ •μ˜ μŠ€νƒ€μΌμ„ μΆ”κ°€ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€. ν”ŒλŸ¬κ·ΈμΈ μž‘μ„±μ— λŒ€ν•œ μžμŠ΅μ„œ λ₯Ό μ½μœΌμ‹­μ‹œμ˜€. 그것은 같은 κ²ƒμž…λ‹ˆλ‹€

L.DivIcon.CustomColor = L.DivIcon.extend({
    createIcon: function(oldIcon) {
           var icon = L.DivIcon.prototype.createIcon.call(this, oldIcon);
           icon.style.backgroundColor = this.options.color;
           return icon;
    }
})

μ €λŠ” 개인적으둜 이것이 널리 μ‚¬μš©λ˜λŠ” κΈ°λŠ₯이라고 μƒκ°ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ μ§€κΈˆμ€ 이 κΈ°λŠ₯을 λ‹«μŠ΅λ‹ˆλ‹€.

λͺ¨λ“  3 λŒ“κΈ€

μ•ˆλ…•,
μ•„μ΄μ½˜μ˜ 색상은 무엇을 μ˜λ―Έν•©λ‹ˆκΉŒ? CSSμ—μ„œ background-colorλ₯Ό μ„€μ •ν•˜κ³  DivIcon이 색상을 λ³€κ²½ν–ˆμŠ΅λ‹ˆλ‹€.
screen shot 2017-01-06 at 6 10 18 pm

λ‹Ήμ‹ μ—κ²Œ ν•„μš”ν•œ 것이 μ•„λ‹Œκ°€μš”? μ’€ 더 ꡬ체적으둜 말씀해 μ£Όμ‹œκ² μŠ΅λ‹ˆκΉŒ?

μ•ˆλ…•ν•˜μ„Έμš” @samik88 μž…λ‹ˆλ‹€ .

μ‚¬μš© μ‚¬λ‘€μ—μ„œ μ§€μ •ν•œ λŒ€λ‘œ 마컀 μ•„μ΄μ½˜μ˜ 색상(RGB 색상 μ½”λ“œ)은 마컀 μ’Œν‘œκ°€ μžˆλŠ” λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ κ²€μƒ‰λ˜λ―€λ‘œ CSS ν΄λž˜μŠ€μ—μ„œ μ •μ˜ν•  수 μ—†μŠ΅λ‹ˆλ‹€(μ΄λ ‡κ²Œ ν•˜λ €λ©΄ 16777215 css 클래슀(뢈투λͺ…도λ₯Ό ν¬ν•¨ν•˜μ§€ μ•ŠλŠ” 각 rgb 색상 μ½”λ“œμ— λŒ€ν•΄ ν•˜λ‚˜μ”©), μ΄λŠ” 어리석은 μΌμž…λ‹ˆλ‹€.

마컀의 rgb 색상을 μž…λ ₯ν•  수 μžˆλŠ” ν…μŠ€νŠΈ ν•„λ“œλ₯Ό μΆ”κ°€ν•˜μ—¬ μ‚¬μš© 사둀λ₯Ό ν™•μΈν•˜λ„λ‘ 예제λ₯Ό λ³€κ²½ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 그러면 DivIconμ—μ„œ 이λ₯Ό μ„€μ •ν•  수 μ—†μœΌλ―€λ‘œ 마컀 μ•„μ΄μ½˜ 색상을 λ³€κ²½ν•  수 μ—†μŠ΅λ‹ˆλ‹€.

κ·Έλ ‡κ²Œ ν•˜λ €λ©΄ μƒμ„±λœ DIV에 CSS μŠ€νƒ€μΌ 속성을 μ„€μ •ν•  수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

이 κΈ°λŠ₯은 L.Marker 의 getElement() λ©”μ†Œλ“œλ‘œ λ‹€λ£° 수 μžˆμŠ΅λ‹ˆλ‹€. 예:

var marker = new L.Marker(myCenter, {
  icon: L.divIcon()
});
map.addLayer(marker);

marker.getElement().style.border = '5px dotted lime';
marker.getElement().style.width = '50px';
marker.getElement().style.height = '50px';

μž‘λ™ 예λ₯Ό μ°Έμ‘°ν•˜μ‹­μ‹œμ˜€.

이것은 λ‹€μ†Œ 극단적인 κ²½μš°μ΄λ―€λ‘œ L.DivIcon 클래슀λ₯Ό ν™•μž₯ν•˜μ—¬ μ‚¬μš©μž μ •μ˜ μŠ€νƒ€μΌμ„ μΆ”κ°€ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€. ν”ŒλŸ¬κ·ΈμΈ μž‘μ„±μ— λŒ€ν•œ μžμŠ΅μ„œ λ₯Ό μ½μœΌμ‹­μ‹œμ˜€. 그것은 같은 κ²ƒμž…λ‹ˆλ‹€

L.DivIcon.CustomColor = L.DivIcon.extend({
    createIcon: function(oldIcon) {
           var icon = L.DivIcon.prototype.createIcon.call(this, oldIcon);
           icon.style.backgroundColor = this.options.color;
           return icon;
    }
})

μ €λŠ” 개인적으둜 이것이 널리 μ‚¬μš©λ˜λŠ” κΈ°λŠ₯이라고 μƒκ°ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ μ§€κΈˆμ€ 이 κΈ°λŠ₯을 λ‹«μŠ΅λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰