Leaflet: L.Icon.Default рдЧрд▓рдд рдЫрд╡рд┐ url рд▓рд╛рддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 28 рд╕рд┐рддре░ 2016  ┬╖  90рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: Leaflet/Leaflet

  • [ x] рдореИрдВ рдПрдХ рдмрдЧ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдорджрдж рдирд╣реАрдВ рдорд╛рдВрдЧ рд░рд╣рд╛ рд╣реВрдВ
  • [ ] рдореИрдВрдиреЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЛ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рд╡реНрдпрд╡рд╣рд╛рд░ рдкреНрд░рд▓реЗрдЦрд┐рдд рдФрд░ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИ
  • [x] рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдкрддреНрд░рдХ рдХреЛрдб рдореБрджреНрджрд╛ рд╣реИ, рдореЗрд░реЗ рдЕрдкрдиреЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рди рд╣реА рдореИрдВ рдЬрд┐рд╕ рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ (рдХреЙрд░реНрдбреЛрд╡рд╛, рдЖрдпрдирд┐рдХ, рдХреЛрдгреАрдп, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛тАж)
  • [ ] рдореИрдВрдиреЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрджреНрджреЛрдВ рдХреА рдЦреЛрдЬ рдХреА рд╣реИ рдХрд┐ рдпрд╣ рдЕрднреА рддрдХ рд░рд┐рдкреЛрд░реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

рдЫрд╡рд┐ рдпреВрдЖрд░рдПрд▓ рдкрддреНрд░рдХ рдореБрдЭреЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИ https://uismedia.geo-info-manager.com/apis/leaflet_1/imagesmarker-icon-2x.pngред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд▓рд╛рдкрддрд╛ "/" рд╣реИ
рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдореБрдЭреЗ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реИ
рд▓реАрдлрд▓реЗрдЯ.рдорд┐рди.рдЬреЗрдПрд╕:5 https://uismedia.geo-info-manager.com/apis/leaflet_1/images/ 403 рдкреНрд░рд╛рдкреНрдд

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЕрдорд╛рдиреНрдп рдбреЗрдЯрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдЬреЛ рдХрд┐рдпрд╛ рд╡рд╣ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛

import L from 'leaflet';

import icon from 'leaflet/dist/images/marker-icon.png';
import iconShadow from 'leaflet/dist/images/marker-shadow.png';

let DefaultIcon = L.icon({
    iconUrl: icon,
    shadowUrl: iconShadow
});

L.Marker.prototype.options.icon = DefaultIcon;

рд╢рд╛рдпрдж рд░реЗрдЯрд┐рдирд╛ рдЖрдЗрдХрди рдХреЛ рднреА рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЯреНрд╡реАрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╕рднреА 90 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

  • рдХреНрдпрд╛ рдЖрдкрдХреЗ рд╕рд░реНрд╡рд░ рдореЗрдВ рдХреЛрдИ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡реЗрдмрдкреЗрдЬ рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╣рдо рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рддрд╛рдХрд┐ рд╣рдо рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕реНрд╡рдпрдВ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХреЗрдВ?
  • рдЖрдк рдХрд┐рд╕ OS рдФрд░ рд╡реЗрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рд▓реАрдлрд▓реЗрдЯ.рдорд┐рди.рдЬреЗрдПрд╕:5 https://uismedia.geo-info-manager.com/apis/leaflet_1/images/ 403 рдкреНрд░рд╛рдкреНрдд

рдпрд╣ рдЙрд╕реА рдореБрджреНрджреЗ рд╕реЗ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ https://github.com/Leaflet/Leaflet/issues/4849 рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИ

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВ рдЙрди рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕реБрдХ рд╣реВрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЗрд╕реЗ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЙрдирдХреЗ рдЦрд┐рд▓рд╛рдл рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореЗрд░реЗ рдкрд╛рд╕ RC3 рд╕реЗ 1.0.1 рддрдХ рдЬрд╛рдиреЗ рдореЗрдВ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдереА - рдореЗрд░реЗ рдХреЛрдб рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рд▓рд╛рдЗрди рдереА L.Icon.Default.imagePath = 'images'; - рдпрд╣ рдпрд╛рдж рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХрд┐ рдРрд╕рд╛ рдХреНрдпреЛрдВ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ - рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рд▓рд╛рдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИ

рд╡реЗрдмрдкреИрдХ рдФрд░ рд▓реАрдлрд▓реЗрдЯ рджреЛрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рджреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЕрдЪрд╛рдирдХ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдорд┐рд▓рд╛ред
рдпрджрд┐ рдореИрдВ рдорд╛рдирдЪрд┐рддреНрд░ рдореЗрдВ рдорд╛рд░реНрдХрд░ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ, рддреЛ рдЫрд╡рд┐рдпрд╛рдВ рдирд╣реАрдВ рдорд┐рд▓рддреА рд╣реИрдВред рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рдлреЗрдВрдХрддрд╛ рд╣реИ:
image

рдареАрдХ рд╣реИ рдореЗрд░реЗ рдкрд╛рд╕ рдХреБрдЫ рд╣реИред

рддреЛ рдПрдХ рдорд╛рд░реНрдХрд░ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЫрд╡рд┐рдпрд╛рдВ (рдЖрдЗрдХрди рдФрд░ рдЫрд╛рдпрд╛) рдирд╣реАрдВ рдорд┐рд▓реА рд╣реИрдВред
image

рдкрддреНрд░рдХ рдореЗрдВ рдпрд╣ рдХрд╛рд░реНрдп:

_getIconUrl: function (name) {
    if (!L.Icon.Default.imagePath) {    // Deprecated, backwards-compatibility only
        L.Icon.Default.imagePath = this._detectIconPath();
    }

    // <strong i="10">@option</strong> imagePath: String
    // `L.Icon.Default` will try to auto-detect the absolute location of the
    // blue icon images. If you are placing these images in a non-standard
    // way, set this option to point to the right absolute path.
    return (this.options.imagePath || L.Icon.Default.imagePath) + L.Icon.prototype._getIconUrl.call(this, name);
},

url рдХреЗ рдЕрдВрдд рдореЗрдВ data:image url рдореЗрдВ рдирд┐рдореНрди рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реЛрдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ:
")marker-icon-2x.png ред

рдпрджрд┐ рдЖрдк + L.Icon.prototype._getIconUrl.call(this, name) рд╣рдЯрд╛рддреЗ рд╣реИрдВ рддреЛ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред ") рднрд╛рдЧ рд╢рд╛рдпрдж _detectIconPath рд░реЗрдЧреЗрдХреНрд╕ рдЬрд╛рджреВ рд╕реЗ рд╣реИред рдореИрдВ рдЗрд╕реЗ рдареАрдХ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдкрд┐рдЫрд▓реЗ рджреЛ рд╡рд░реНрдгреЛрдВ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдпрд╣ рдХрд╛рд░реНрдп рд╣реБрдЖ:

_getIconUrl: function (name) {
    if (!L.Icon.Default.imagePath) {    // Deprecated, backwards-compatibility only
        L.Icon.Default.imagePath = this._detectIconPath();
    }

    // <strong i="21">@option</strong> imagePath: String
    // `L.Icon.Default` will try to auto-detect the absolute location of the
    // blue icon images. If you are placing these images in a non-standard
    // way, set this option to point to the right absolute path.
  var url = (this.options.imagePath || L.Icon.Default.imagePath);

  return url.slice(0, - 2);
},

рдФрд░ рдпрд╣рд╛рдВ рд╣рдо рдЬрд╛рддреЗ рд╣реИрдВ, рдЖрдЗрдХрди рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред рдПрдХ рдЖрдЦрд┐рд░реА рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЫрд╛рдпрд╛ рдЫрд╡рд┐ рдПрдХ рдорд╛рд░реНрдХрд░ рдЖрдЗрдХрди рднреА рд╣реИ - рд╕реНрд░реЛрдд рдкрде рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЧрд▓рдд рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреНрдпреЛрдВ (рдЕрднреА рддрдХ)ред рддреЛ рдПрдХ рдорд╛рд░реНрдХрд░ рдЕрдм рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

image

@IvanSanchez рдХреНрдпрд╛ рдЗрд╕рд╕реЗ рдЖрдкрдХреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдереЛрдбрд╝рд╛ рдХрдо рдХрд░рдиреЗ рдореЗрдВ рдорджрдж

@codeofsumit _detectIconPath рдорд╛рдзреНрдпрдо рд╕реЗ рдХрджрдо рдЙрдард╛рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рд╡рд╣рд╛рдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ path рдЪрд░ рдХреЗ рд░реЗрдЧреЗрдХреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рд░рд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреНрдпрд╛ рдореВрд▓реНрдп рд╣реИред

@IvanSanchez @perliedman рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдмрдЧ рдорд┐рд▓рд╛ред

рдпрд╣ _detectIconPath

_detectIconPath: function () {
    var el = L.DomUtil.create('div',  'leaflet-default-icon-path', document.body);
    var path = L.DomUtil.getStyle(el, 'background-image') ||
               L.DomUtil.getStyle(el, 'backgroundImage');   // IE8
    document.body.removeChild(el);

    return path.indexOf('url') === 0 ?
        path.replace(/^url\([\"\']?/, '').replace(/marker-icon\.png[\"\']?\)$/, '') : '';
}

path рдЪрд░ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реИ:
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAApCAYAAADAk4LOAAAFgUlEQтАжn3EUrUZ10EYNw7BWm9x1GiPssi3GgiGRDKWRYZfXlON+dfNbM+GgIwYdwAAAAASUVORK5CYII=") ред

рдХреНрдпрд╛ рд╕рд╣реА рд╣реИред

рдЕрдм рд░реЗрдЧреЗрдХреНрд╕ рдЗрд╕рд╕реЗ data.image url рдирд┐рдХрд╛рд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЗрд╕реЗ рд▓реМрдЯрд╛рддрд╛ рд╣реИ:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAApCAYAAADAk4LOAAAFgUlEQтАжn3EUrUZ10EYNw7BWm9x1GiPssi3GgiGRDKWRYZfXlON+dfNbM+GgIwYdwAAAAASUVORK5CYII=")

рдЕрдВрддрд┐рдо ") рдЬрд┐рд╕реЗ path рдЪрд░ рд╕реЗ рд╣рдЯрд╛рдпрд╛ рдирд╣реАрдВ рдЧрдпрд╛ рд╣реИред рд░реЗрдЧреЗрдХреНрд╕ /^url\([\"\']?/ рдХреЗрд╡рд▓ рдкрде рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ url(" рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рди рдХрд┐ рдЕрдВрдд рдореЗрдВ ") рдХреЛред
рдЗрд╕ рд░реЗрдЧреЗрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

return path.indexOf('url') === 0 ?
    path.replace(/^url\([\"\']?/, '').replace(/\"\)$/, '').replace(/marker-icon\.png[\"\']?\)$/, '') : '';

рдпрд╣ рдПрдХ рд╕рд╛рде рдЫрд╡рд┐ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ

var url = (this.options.imagePath || L.Icon.Default.imagePath);

рдЕрдВрджрд░ _getIconUrl ред рд▓реЗрдХрд┐рди рдпрд╣ рдЫрд╛рдпрд╛ рдХреЛ рдареАрдХ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ - рдореИрдВ рдЕрднреА рднреА рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдЫрд╛рдпрд╛ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред

рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд╣реЛрдирд╛,
_detectIconPath рдореЗрдВ рдкрде рдорд╛рди рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реИ "url("data:image/png;base64,i...5CYII=")"
рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ _getIconUrl рдФрд░ _detectIconPath рдХреЛ рдбреЗрдЯрд╛ URL рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛

рдЫрд╛рдпрд╛ рдореБрджреНрджрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣реИ рдХрд┐ рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░рдг рд╣реЛ рд░рд╣рд╛ рд╣реИ _getIconUrl рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдп L.Icon.Default.imagePath рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдорд╛рд░реНрдХрд░ рдбреЗрдЯрд╛ рдпреВрдЖрд░рдПрд▓ рдХреЗ рд╕рд╛рде рд╕реЗрдЯ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдорд╛рд░реНрдХрд░ рдХреЗ рд▓рд┐рдП рдЪрд┐рддреНрд░ рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдмрдврд╝рд╛рдпрд╛
image

рдХреНрдпрд╛ рдпрд╣ рдорд╛рд░реНрдХрд░ рдЫрд╡рд┐ рдХреЛ рд╣рд╛рд░реНрдбрдХреЛрдбрд┐рдВрдЧ рдХрд░рдиреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?
https://github.com/Leaflet/Leaflet/commit/837d19093307eb5eeb1fca6536962a1ab1573dd5

@ рд░рд╛рдбреВ-рдлрд┐рд▓рд┐рдк рдореИрдВ рдЗрд╕реЗ рдЖрдкрдХреЗ рдкреАрдЖрд░ рдореЗрдВ рдЗрди рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ - рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдЕрдиреНрдп рдкреНрд░рднрд╛рд╡ рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ:
image

рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ - рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рдХрд╣рд╛ - рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдпреВрдЖрд░рдПрд▓ рдорд╛рд░реНрдХрд░ рдЫрд╡рд┐ рд╣реИ, рдореВрд▓ рд░реВрдк рд╕реЗ рд╕рднреА рдЖрдЗрдХрди рдХреЗ рд▓рд┐рдПред
рддреЛ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рд╕реАрдПрд╕рдПрд╕ рдореЗрдВ рдЫрд╛рдпрд╛ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдпреВрдЖрд░рдПрд▓ рдЬреЛрдбрд╝рд╛:

/* Default icon URLs */
.leaflet-default-icon-path {
    background-image: url(images/marker-icon.png);
}

.leaflet-default-shadow-path {
    background-image: url(images/marker-shadow.png);
}

рдлрд┐рд░ рдореИрдВрдиреЗ рдирд╛рдо рдХреЛ _getIconUrl рд╕реЗ _detectIconPath рдФрд░ рдЙрд╕ рд╡рд░реНрдЧ рдХреЛ рдЙрд╕ рддрддреНрд╡ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд┐рд╕рд╕реЗ рдкрде рдирд┐рдХрд╛рд▓рд╛ рдЧрдпрд╛ рд╣реИ:

_getIconUrl: function (name) {

  L.Icon.Default.imagePath = this._detectIconPath(name);

    // <strong i="15">@option</strong> imagePath: String
    // `L.Icon.Default` will try to auto-detect the absolute location of the
    // blue icon images. If you are placing these images in a non-standard
    // way, set this option to point to the right absolute path.
  var path = this.options.imagePath || L.Icon.Default.imagePath;
  return path.indexOf("data:") === 0 ? path : path + L.Icon.prototype._getIconUrl.call(this, name);
},

_detectIconPath: function (name) {
    var el = L.DomUtil.create('div',  'leaflet-default-' + name + '-path', document.body);
    var path = L.DomUtil.getStyle(el, 'background-image') ||
               L.DomUtil.getStyle(el, 'backgroundImage');   // IE8

    document.body.removeChild(el);

    return path.indexOf('url') === 0 ? path.replace(/^url\([\"\']?/, '').replace(/(marker-icon\.png)?[\"\']?\)$/, '') : '';
}

рдореБрдЭреЗ detectIconPath рдЖрд╕рдкрд╛рд╕ if/else рдХреЛ рднреА рд╣рдЯрд╛рдирд╛ рдкрдбрд╝рд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдЫрд╛рдпрд╛ рдЖрдЗрдХрди рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЕрдм рд╕рдм рдХреБрдЫ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рд░реНрдХрд░ рдЖрдЗрдХрди рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ - рдХрд╕реНрдЯрдо рд╡рд╛рд▓реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИред

@codeofsumit рд╣рд╛рдБ, рдореИрдВрдиреЗ рдпрд╣рд╛рдБ рдХреБрдЫ рдРрд╕рд╛ рд╣реА рдХрд┐рдпрд╛ рд╣реИ https://github.com/Radu-Filip/Leaflet/tree/temp
рдФрд░ рдореИрдВ рдЕрднреА рдХреЗ рд▓рд┐рдП рд╣реИрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ред рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╡реЗрдмрдкреИрдХ рд╡рдЧреИрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдПрдХ рдФрд░ рд╕рдмреВрдд рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛

@ рд░рд╛рдбреВ-рдлрд┐рд▓рд┐рдк рдХреНрдпрд╛ рдЖрдк рдЙрд╕ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдкреАрдЖрд░ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдпрд╣ рд╡рд┐рд▓рдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

@codeofsumit рд╣реЛ рдЧрдпрд╛, рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдкреВрд░рд╛ рд╣реЛрддрд╛ рд╣реИ

рдирдорд╕реНрддреЗ,

рд╢рд╛рдпрдж рдореБрдЭреЗ рдХреБрдЫ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗрдмрдкреИрдХ рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдХреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдХреИрдЯрд▓реЙрдЧ рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕рд╛рде рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ L.Icon.Default рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдЧрд╛ред

рдбреЗрдореЛ: http://playground-leaflet.rhcloud.com/nexo/1/edit?html ,css,output

рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рдЖрдк рдХрд┐рд╕реА рднреА рдореБрд╢реНрдХрд┐рд▓ RegExp рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рд░реНрдХрд░ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдЗрдирд▓рд╛рдЗрди (рд╣рд╛рд░реНрдб рдХреЛрдбрд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛) рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рд╡реИрд╕реЗ рднреА рдЫреЛрдЯреА рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╡реЗрдмрдкреИрдХ рдЗрдЪреНрдЫрд┐рдд рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред

рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рдирдХрд╛рд░рд╛рддреНрдордХ рдкрдХреНрд╖ рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдорд╛рд░реНрдХрд░ рдХрд╛ рдЕрдкрдирд╛ рдмреЗрд╕ 64 рдЖрдЗрдХрди рд╣реЛрддрд╛ рд╣реИ, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЗрд╕реЗ рдХреИрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ... (рдкреАрдЖрд░ # 5041 рдХреЗ рд▓рд┐рдП рд╡рд╣реА рдирдХрд╛рд░рд╛рддреНрдордХ рдкрдХреНрд╖)
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдкрд░рдд рдирд┐рдпрдВрддреНрд░рдг рдЖрдЗрдХрди рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЬреИрд╕рд╛ рдХрд┐ рдЫрд╡рд┐ src рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рд░рдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЗрд╕реЗ рдкреГрд╖реНрдарднреВрдорд┐ рдЫрд╡рд┐ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░рдХреЗ рд╣рдо рдкрд░рд┐рд╢реЛрдзрди рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд╕рд╛рде рдПрдХ рдЫрд┐рдкрд╛ рд╣реБрдЖ рдЬрд╛рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ ), рдЕрдиреНрдпрдерд╛ рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЗрд╕реЗ рдмрд╣реБрдд рдкрд╣рд▓реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реА рдЬрдЧрд╣ рдореЗрдВ рдЫрд╡рд┐ рдкрде рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рд╕реЗ рдмрдЪрддрд╛ред

рдбреЗрдореЛ: http://playground-leaflet.rhcloud.com/mey/1/edit?html ,css,output (рд░реЗрдЯрд┐рдирд╛ рдХреА рджреЗрдЦрднрд╛рд▓ рдирд╣реАрдВ рдХрд░рдирд╛)

рдкреНрд▓рдЧрдЗрди рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдХреЗрд╡рд▓ рд╡реЗрдмрдкреИрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд░рдЦрддрд╛ рд╣реИред

рдЙрдореНрдореАрдж рд╣реИ рдХреА рдпрд╣ рдорджрдж рдХрд░реЗрдЧрд╛ред

рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдХреБрдЫ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЧрд▓рдд рд╣реИред

рдкрддреНрд░рдХ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ "рдЬрдЯрд┐рд▓" рдкрде рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕реАрдПрд╕рдПрд╕ рдлрд╝рд╛рдЗрд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкреВрд░реНрд╡-рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕реНрдерд╛рди рдкрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд▓реЗрдХрд┐рди рд╡реЗрдмрдкреИрдХ рдмрд┐рд▓реНрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдмрдВрдбрд▓ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕реАрдПрд╕рдПрд╕ рдФрд░ (рдпрд╛ рдирд╣реАрдВ) рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рднреА рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рдФрд░ рдЙрдирдХрд╛ рдирд╛рдо рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ!), рдпрд╣ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдбреЗрд╡рд▓рдкрд░ рд╡реЗрдмрдкреИрдХ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ (рдЬреИрд╕реЗ рдЫрд╡рд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛)ред
рдЗрд╕рд▓рд┐рдП рдЬрдм рд╡реЗрдмрдкреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдкрддреНрд░рдХ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдкреАрдЖрд░ #5041 рдЙрд╕ рдорд╛рдорд▓реЗ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪрд╛рд▓ рдХреА рддрд░рд╣ рд╣реИ рдЬрд╣рд╛рдВ рд╡реЗрдмрдкреИрдХ рд╕реАрдПрд╕рдПрд╕ рдореЗрдВ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдЗрдирд▓рд╛рдЗрди рдХрд░рддрд╛ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдорд╛рд░реНрдХрд░ рдореЗрдВ рдмреЗрд╕ 64 рдЫрд╡рд┐ рдХреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░рдиреЗ рдХреА рдХреАрдордд рдкрд░ред рдЧреИрд░-рд╡реЗрдмрдкреИрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧрдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдмрд╛рдд рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдкреАрдЖрд░ #4979 рдХреЗрд╡рд▓ рд╡реЗрдмрдкреИрдХ рдмрд┐рд▓реНрдб рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдерд╛ (рдлрд╝рд╛рдЗрд▓ рдЧреБрдо рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг), рдпрд╣ рд╕рднреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЫрд╡рд┐ рдкрде рд╕рдВрдХрд▓реНрдк рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рддрдм рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ L.Icon.Default.imagePath рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ?
@jasongrout рдФрд░ @Eschon , рд╢рд╛рдпрдж рдЖрдк рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдиреЗ рдЗрд╕реЗ рдХреИрд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд┐рдпрд╛?

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ред рдореИрдВ рдЕрднреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЖрдЗрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдмрдЧ рдЕрдм рддрдХ рдореЗрд░реЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдереАред

рдирдорд╕реНрддреЗ, рдпрд╣ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл рдПрдХ рдиреЛрдЯ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ 1.0.1 рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рдкрде рддреНрд░реБрдЯрд┐ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред
рдореИрдВ рдЗрд╕реЗ рдкрддреНрд░рдХ Drupal рдореЙрдбреНрдпреВрд▓ (7.x-1.x-dev) рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдпрд╣рд╛рдВ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд░рд┐рдкреЛрд░реНрдЯ рдХреА рдЧрдИ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ: https://www.drupal.org/node/2814039 рдорд╛рдорд▓реЗ рдореЗрдВ рдЙрдкрдпреЛрдЧреАред

рдЬрд╣рд╛рдБ рддрдХ рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдБ "рд╕рдорд╕реНрдпрд╛" _getIconUrl рдлрд╝рдВрдХреНрд╢рди рдкрд░ рд╣реИ? рдЬреИрд╕рд╛ рдХрд┐ L.Icon.Default.imagePath рдмрд╛рдж рдПрдХ рд▓рд╛рдкрддрд╛ рд╕реНрд▓реИрд╢ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдбреНрд░реВрдкрд▓ рдореЗрдВ рдЫрд╡рд┐ рдкрде рдЗрд╕ рддрд░рд╣ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ " /sites/all/libraries/leaflet/imagesmarker-icon.png "ред рдЫрд╡рд┐ рдкрде рдФрд░ рдорд╛рд░реНрдХрд░ рдЫрд╡рд┐ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо (marker-icon.png) рдХреЗ рдмреАрдЪ рдПрдХ рд╕реНрд▓реИрд╢ / рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╣рд╛рдп @ anairamzap-mobomo,

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЬреЛ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рд╡рд╣ рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рд╣реИред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдврд╛рдВрдЪреЗ (рдбреНрд░реВрдкрд▓) рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдВрджрд░рдЧрд╛рд╣ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдмрдЧ рдЙрд╕ рдмрдВрджрд░рдЧрд╛рд╣ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдмрдВрджрд░рдЧрд╛рд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред

рд╡реЗрдирд┐рд▓рд╛ рдЬреЗрдПрд╕ рдХреЗ рд╕рд╛рде рдкрддреНрд░рдХ 1.0.x рдореЗрдВ рдЕрдиреБрдЧрд╛рдореА рд╕реНрд▓реИрд╢ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╢рд╛рдорд┐рд▓ рд╣реИ: http://playground-leaflet.rhcloud.com/fosa/1/edit?html ,output

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВ http://cgit.drupalcode.org/leaflet/tree/leaflet.module#n51 , рдЬрд╣рд╛рдВ L.Icon.Default.imagePath Drupal рдореЙрдбреНрдпреВрд▓ рджреНрд╡рд╛рд░рд╛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЙрдбреНрдпреВрд▓ рдХреИрдЯрд▓реЙрдЧ 0.7.x рдФрд░ 1.0.x рдХреЗ рдмреАрдЪ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд╕рдВрднрд╛рд▓ рдирд╣реАрдВ рдкрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╕реНрд▓реИрд╢ рдХреЛ рдЕрдм L.Icon.Default.imagePath рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЪреВрдВрдХрд┐ рдкрддреНрд░рдХ 1.0.0 рдПрдХ рдкреНрд░рдореБрдЦ рд░рд┐рд▓реАрдЬ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд┐рдЫрдбрд╝реА рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдирд╣реАрдВ рд╣реИред

рдЕрд░реЗ @ghybs рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдБ... рдореИрдВ рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП Drupal рдореЙрдбреНрдпреВрд▓ рдЕрдиреБрд░рдХреНрд╖рдХреЛрдВ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░реВрдБрдЧрд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рдХрд╣рд╛, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ 1.0.x рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреА рддрд░рд╣ рдлрд┐рдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдпрд╛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рд╡рд╛рд▓реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпрд╛рдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред

рдЖрдкрдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдореЗрд░реЗ рдкрд╛рд╕ рдареАрдХ рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рд░рд┐рдкреЛрд░реНрдЯ рдХреА рдЧрдИ рдереА - рдПрдХ рдСрд░реБрд▓рд┐рдпрд╛ рдХрдВрдХрд╛рд▓/рдПрд╕рдиреЗрдХреНрд╕реНрдЯ + рд╡реЗрдмрдкреИрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВред

рдЬрдм рддрдХ рдпрд╣ рддрдп рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдореИрдВрдиреЗ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдЕрдкрдиреЗ рд╕реНрд░реЛрдд рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХреЙрдкреА рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ рдФрд░ рдПрдХ рдХрд╕реНрдЯрдо рдорд╛рд░реНрдХрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ - рдЖрдХрд╛рд░/рдкреНрд▓реЗрд╕рдореЗрдВрдЯ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдЫреЛрдбрд╝рдирд╛ рдареАрдХ рд▓рдЧрддрд╛ рд╣реИ ...

        var customDefault = L.icon({
            iconUrl: 'images/marker-icon.png',
            shadowUrl: 'images/marker-shadow.png',
        });

рдЕрдорд╛рдиреНрдп рдбреЗрдЯрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдЬреЛ рдХрд┐рдпрд╛ рд╡рд╣ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛

import L from 'leaflet';

import icon from 'leaflet/dist/images/marker-icon.png';
import iconShadow from 'leaflet/dist/images/marker-shadow.png';

let DefaultIcon = L.icon({
    iconUrl: icon,
    shadowUrl: iconShadow
});

L.Marker.prototype.options.icon = DefaultIcon;

рд╢рд╛рдпрдж рд░реЗрдЯрд┐рдирд╛ рдЖрдЗрдХрди рдХреЛ рднреА рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЯреНрд╡реАрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдХреЛрдИ рд╕рдВрд╢реЛрдзрд┐рдд рдкрддреНрд░рдХ.рдЬреЗрдПрд╕ рдлрд╝рд╛рдЗрд▓ рднреЗрдЬ рд╕рдХрддрд╛ рд╣реИ?
рдХреЛрдб рдЬреЛ @ajoslin103 рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ:
```var customDefault = L.icon({
iconUrl: 'images/marker-icon.png',
рд╢реИрдбреЛрдпреВрдЖрд░рдПрд▓: 'рдЗрдореЗрдЬ/рдорд╛рд░реНрдХрд░-рд╢реИрдбреЛ.рдкреАрдПрдирдЬреА',
});

рдореИрдВрдиреЗ рд▓реАрдлрд▓реЗрдЯ.рдЬреЗрдПрд╕ рдлрд╛рдЗрд▓ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛, рдореИрдВрдиреЗ рд╕рд┐рд░реНрдл рдорд╛рд░реНрдХрд░ рдЗрдореЗрдЬ рдХреЛ рд▓реАрдлрд▓реЗрдЯ рд╡рд┐рддрд░рдг рд╕реЗ рдЕрдкрдиреЗ рд╕рд╛рдорд╛рдиреНрдп рдЗрдореЗрдЬ рдлреЛрд▓реНрдбрд░ рдореЗрдВ рдХреЙрдкреА рдХрд┐рдпрд╛, рдФрд░ рдлрд┐рд░ рдЙрд╕ рдЯреБрдХрдбрд╝реЗ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдХрд╕реНрдЯрдо рдЖрдЗрдХрди рдХреЗ рд░реВрдк рдореЗрдВ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдерд╛ред

рдореИрдВ crob611 рдХреЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ рдореВрд▓ css рдореЗрдВ http рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдореЗрд░реА рд╕рд╛рдЗрдЯ рдХреЛ https рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░реЛрд╕рд╛ рдЬрд╛ рд░рд╣рд╛ рдерд╛ред

рд▓реЛрдХреЗрд╢рдирдлрд╛рдЙрдВрдб (рдИ) рдкрд░ ``` рдлрдВрдХреНрд╢рди {
рд╡рд░ рддреНрд░рд┐рдЬреНрдпрд╛ = e.рд╕рдЯреАрдХрддрд╛ / 2;
рд╡рд░ рдХрд╕реНрдЯрдордбрд┐рдлреЙрд▓реНрдЯ = рдПрд▓.рдЖрдЗрдХрди ({
iconUrl: 'marker_icon_2x',
рд╢реИрдбреЛрдпреВрдЖрд░рдПрд▓: 'marker_shadow.png'
});
L.marker(e.latlng).addTo(map)
.bindPopup ("рдЖрдк рдЗрд╕ рдмрд┐рдВрджреБ рд╕реЗ" + рддреНрд░рд┐рдЬреНрдпрд╛ + "рдореАрдЯрд░ рдХреЗ рднреАрддрд░ рд╣реИрдВ")ред openPopup ();
L.circle(e.latlng, рддреНрд░рд┐рдЬреНрдпрд╛)ред AddTo (рдорд╛рдирдЪрд┐рддреНрд░);
}

рдореИрдВ рдирдпрд╛ рдЖрдЗрдХрди рдХреИрд╕реЗ рд╕реЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?

рдореИрдВ рдЕрдкрдиреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдХрд╕реНрдЯрдо рдЖрдЗрдХрди рдмрдирд╛рддрд╛ рд╣реВрдВ (рдореИрдВ рдСрд░реЗрд▓рд┐рдпрд╛ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ)

        this.customDefault = L.icon({
            iconUrl: 'images/marker-icon.png',
            shadowUrl: 'images/marker-shadow.png',
        });

рддрдм рдореИрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдЬрдм рдореИрдВ рдорд╛рд░реНрдХрд░ рдХреЛ рд╕рдВрд▓рдЧреНрди () рд╡рд┐рдзрд┐ рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ

        var map = L.map('mapid').setView([latitude, longitude], 13);
        let urlTemplate = 'http://{s}.tile.osm.org/{z}/{x}/{y}.png';
        map.addLayer(L.tileLayer(urlTemplate, { minZoom: 4 }));
        L.marker([latitude, longitude], { icon: this.customDefault }).addTo(map);

рд╕рдВрджрд░реНрдн: http://leafletjs.com/examples/custom-icons/

рдЬрдм рддрдХ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХреЛрдИ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛, рдХреНрдпрд╛ рдореИрдВ _getIconUrl() (рдпрд╛ рдЬреЛ рднреА) рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдбреЗрдЯрд╛ UI рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддрд╛ рд╣реВрдВ, console.warn рдпрд╛ рдХреБрдЫ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ Github рд╕рдорд╕реНрдпрд╛ URL рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рд░рдирдЯрд╛рдЗрдо рдЪреЗрддрд╛рд╡рдиреА рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗ рд╕рдХрддрд╛ рд╣реВрдВред рдЙрд╕рдХреЗ рдЬреИрд╕рд╛ред

рдпрд╣ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЛ рд╕рд╣реА рдЬрдЧрд╣ рдкрд░ рд▓рд╛рдПрдЧрд╛ рдФрд░ рдХрд╛рдордХрд╛рдЬ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрдЧрд╛ (рдЬреИрд╕реЗ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)ред

рдЗрд╕ рддрд░рд╣ рд░рд┐рдПрдХреНрдЯ (рджреЗрд╡ рдмрдирд╛рддрд╛ рд╣реИ) рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдореБрджреНрджреЗ рд╕реЗ, @PTihomir . рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╕рдорд╛рдзрд╛рди

import L from 'leaflet';
delete L.Icon.Default.prototype._getIconUrl;

L.Icon.Default.mergeOptions({
  iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'),
  iconUrl: require('leaflet/dist/images/marker-icon.png'),
  shadowUrl: require('leaflet/dist/images/marker-shadow.png'),
});

рдпрд╣ рд▓реАрдлрд▓реЗрдЯ рдХреЛрд░ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд┐рдП рдмрд┐рдирд╛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИред

@codeofsumit : FYI рдХрд░реЗрдВ, рдЬреЛ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ, рдпрд╣ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗрд╡рд▓ рддреАрди рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдЖрдЗрдХрди рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдпрджрд┐ рд▓реЗрдлрд▓реЗрдЯ рдХрд░рддрд╛ рд╣реИ (рдпрд╛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣реЛрдЧрд╛) рдХреЛ рдЗрд╕реА рддрд░рд╣ рд╕реЗ рдЕрдиреНрдп рдЖрдЗрдХрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рд╢рд╛рдпрдж рдЕрдиреНрдп рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП - рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛) рддреЛ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред


рд╡реЗрдмрдкреИрдХ рд╕реЗ рдЕрдкрд░рд┐рдЪрд┐рдд рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП: рд╡реЗрдмрдкреИрдХ рдЗрди рдЧреБрдгреЛрдВ рдХреЗ рд▓рд┐рдП рдирдП URL рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдЧрд╛:

/***/ 5305024559067547:
/***/ function(module, exports, __webpack_require__) {

    module.exports = __webpack_require__.p + "d95d69fa8a7dfe391399e22c0c45e203.png";

/***/ },


...


    _leaflet2['default'].Icon.Default.mergeOptions({
      iconRetinaUrl: __webpack_require__(5305024559067547),
      iconUrl: __webpack_require__(6633266380715105),
      shadowUrl: __webpack_require__(880063406195787)
    });

(рд╡рд┐рд╡рд░рдг рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ)

@jampy рд╣рд╛рдБ рдмрд┐рд▓реНрдХреБрд▓ред рдЗрд╕рд▓рд┐рдП рдпрд╣ рдПрдХ рдЙрдкрд╛рдп рд╣реИред рд▓реАрдлрд▓реЗрдЯ рдХреЛрд░ рдореЗрдВ рдХреЛрдИ рднреА рд╕рдВрд╢реЛрдзрди рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣рд░ рдЕрдкрдбреЗрдЯ рдХреЗ рд╕рд╛рде рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдореИрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рддрдм рддрдХ рдХрд░реВрдВрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рдХреЛрдИ рдЙрдЪрд┐рдд рд╕рдорд╛рдзрд╛рди рди рд╣реЛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрдо рд╕реЗ рдХрдо рджрд░реНрджрдирд╛рдХ рд▓рдЧрддрд╛ рд╣реИред

рдпрд╣рд╛рдВ рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, detectIconPath рдлрд╝рдВрдХреНрд╢рди http://localhost:8080/2273e3d8ad9264b7daa5bdbf8e6b47f8.png") рдкрде url("http://localhost:8080/2273e3d8ad9264b7daa5bdbf8e6b47f8.png")

рдпрд╣ рдЖрджрд░реНрд╢ рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рд╡реЗрдмрдкреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдореИрдВ рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ

рдореИрдВрдиреЗ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдЯ рдкрд░ рдПрдХ рдЫрд╡рд┐ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХреЙрдкреА рдХрд┐рдпрд╛ рд╣реИ

рдлрд┐рд░ рдореЗрд░реЗ package.json рдореЗрдВ рдореИрдВрдиреЗ рдПрдХ рдкреЛрд╕реНрдЯрдмрд┐рд▓реНрдб рдПрдирдкреАрдПрдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛрдбрд╝рд╛ (рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ)
" рдкреЛрд╕реНрдЯрдмрд┐рд▓реНрдб:рдкреНрд░реЛрдб ": "./Post-Build4Prod.sh"

рдЬреЛ рдПрдХ рдЗрдореЗрдЬ рдлреЛрд▓реНрдбрд░ рдХреЛ рдбрд┐рд╕реНрдЯ рдореЗрдВ рдХреЙрдкреА рдХрд░рддрд╛ рд╣реИ

#bin/bash
cp -r ./images ./dist/.

рддреЛ рдореИрдВ рдЖрдЗрдХрди рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╕реНрдЯрдо рдбрд┐рдлреЙрд▓реНрдЯ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ

    this.customDefault = L.icon({
        iconUrl: 'images/marker-icon.png',
        shadowUrl: 'images/marker-shadow.png',
    });

рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╣реАрдВ рднреА рдХрд░реЗрдВ

    L.marker([latitude, longitude], { icon: this.customDefault }).addTo(map);

@ ajoslin103 , рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдкрд░ рд╡рд┐рдЪрд╛рд░

рдореИрдВрдиреЗ Vue рд╡реЗрдмрдкреИрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛:

import L from 'leaflet';

L.Icon.Default.imagePath = '/';
L.Icon.Default.mergeOptions({
    iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'),
    iconUrl: require('leaflet/dist/images/marker-icon.png'),
    shadowUrl: require('leaflet/dist/images/marker-shadow.png'),
});

рдореБрдЭреЗ Django рдХреЗ рдХрд▓реЗрдХреНрдЯрд┐рдХ рдФрд░ CachedStaticFilesStorage рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬреЛ рд╕реНрдерд┐рд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдирд╛рдо рдкрд░ рдлрд╝рд╛рдЗрд▓ рд╕рд╛рдордЧреНрд░реА рдХрд╛ рд╣реИрд╢ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдорд╛рд░реНрдХрд░-рдЖрдЗрдХрди.рдкреАрдПрдирдЬреА рдорд╛рд░реНрдХрд░-рдЖрдЗрдХрди рдмрди рдЬрд╛рддрд╛ рд╣реИред 2273e3d8ad92.png рдФрд░ рдлрд┐рд░ _detectIconPath рдХреЗ рдЕрдВрдд рдореЗрдВ regexp рдорд┐рд▓рд╛рди рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдЗрд╕реЗ replace(/marker-icon[^"']+\.png[\"\']?\)$/, '') рдмрджрд▓ рджрд┐рдпрд╛ рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рдерд╛ред

рдореБрдЭреЗ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред
рдкрддреНрд░рдХ 1.0.3, рдФрд░ Angular2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред
рдореИрдВ рдХрдмреВрд▓ рдХрд░рддрд╛ рд╣реВрдВ, рдореИрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдЗрд╕ рдзрд╛рдЧреЗ рдХреЛ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПред

рдХреЛрдгреАрдп 2 рдФрд░ 4 . рдХреЗ рд▓рд┐рдП
рдореИрдВ рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ requ.d.ts рдмрдирд╛ рджреЗрддрд╛ рд╣реВрдВ:

interface WebpackRequire {
    <T>(path: string): T;
    (paths: string[], callback: (...modules: any[]) => void): void;
    ensure: (paths: string[], callback: (require: <T>(path: string) => T) => void) => void;
}
interface NodeRequire extends WebpackRequire {}
declare var require: NodeRequire;

рдФрд░ рдлрд┐рд░ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП:

                  this.marker = L.marker(e.latlng, {
                    icon: L.icon({
                        iconUrl: require <any>('../../images/marker-icon.png'),
                        shadowUrl: require <any>('../../images/marker-shadow.png'),
                    })

рд╡реЗрдмрдкреИрдХ рдХреЗ рд╕рд╛рде Vue.js рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди (рдЖрдХрд╛рд░ рдФрд░ рдПрдВрдХрд░ рдХреЗ рд╕рд╛рде):

import L from 'leaflet'

// BUG https://github.com/Leaflet/Leaflet/issues/4968
import iconRetinaUrl from 'leaflet/dist/images/marker-icon-2x.png'
import iconUrl from 'leaflet/dist/images/marker-icon.png'
import shadowUrl from 'leaflet/dist/images/marker-shadow.png'
L.Marker.prototype.options.icon = L.icon({
  iconRetinaUrl,
  iconUrl,
  shadowUrl,
  iconSize: [25, 41],
  iconAnchor: [12, 41],
  popupAnchor: [1, -34],
  tooltipAnchor: [16, -28],
  shadowSize: [41, 41]
})

рдореИрдВрдиреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЖрдЗрдХрди рдХреЛ рдмреЗрд╕ 64 рдмрдирд╛рдо рдмрд╛рд╣рд░реА рдЫрд╡рд┐ URL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрдирд▓рд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рддреНрд╡рд░рд┐рдд рдкреНрд░рджрд░реНрд╢рди рдкрд░реАрдХреНрд╖рдг рдХрд┐рдПред рдорд╛рд░реНрдХрд░реЛрдВ рдХреЗ _a рд▓реЙрдЯ_ рд▓реЛрдб рдХрд░рддреЗ рд╕рдордп (1000, рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ), рдмреЗрд╕ 64 рдЗрдирд▓рд╛рдЗрди рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд░реНрд╢рди рдХрд╛рдлреА рдЦрд░рд╛рдм рд╣реИред

рдмрд╛рд╣рд░реА URL рдХреЗ рд░реВрдк рдореЗрдВ 1000 рдорд╛рд░реНрдХрд░ рдЖрдЗрдХрди рд▓реЛрдб рдХрд░рддреЗ рд╕рдордп Chrome devtools рдкреНрд░рджрд░реНрд╢рди рджреГрд╢реНрдп рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

1000 markers icons as external URLs

рдЗрд╕рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, рдЗрдирд▓рд╛рдЗрди рдмреЗрд╕ 64 рдХреЗ рд░реВрдк рдореЗрдВ 1000 рдорд╛рд░реНрдХрд░ рдЖрдЗрдХрди рдХреЗ рд╕рд╛рде (рдХреГрдкрдпрд╛ рд╕рдордпрд░реЗрдЦрд╛ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рдкреИрдорд╛рдиреЗ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ, рдХреНрд╖рдорд╛ рдХрд░реЗрдВ):

1000 markers icons as inlined base64 URLs

рдЬреИрд╕рд╛ рдХрд┐ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЗрдирд▓рд╛рдЗрди рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдкрд░рдд рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рджреЗрд░реА рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдкреВрд░реЗ рд▓реЛрдб рдХреЛ рд▓рдЧрднрдЧ рдПрдХ рд╕реЗрдХрдВрдб рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред

рдЖрдХрд╕реНрдорд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╢рд╛рдпрдж рдХреЛрдИ рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдмрд╣реБрдд рд╕рд╛рд░реЗ рдорд╛рд░реНрдХрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдЗрд╕ рд▓рдВрдмреА рдЕрд╡рдзрд┐ рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╕реНрддрд╛рд╡:

  • рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рдореЗрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП #5041 рдареАрдХ рдХрд░реЗрдВ; рдЗрд╕рд╕реЗ рдЗрдирд▓рд╛рдЗрди рдХрд┐рдП рдЧрдП рдЖрдЗрдХреЙрди рдмреЙрдХреНрд╕ рд╕реЗ рд╣рдЯрдХрд░ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ
  • рдЕрдЧрд░ рдЗрдирд▓рд╛рдЗрди рдХрд┐рдП рдЧрдП рдЖрдЗрдХреЙрди рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рд▓реЙрдЧ рдЗрди рдХрд░реЗрдВ, рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ

рдПрдХ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдЫрд╡рд┐ рдкрде рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрд░рд╛рдиреА (0.7) рдкрджреНрдзрддрд┐ рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯреЗрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕рдореЗрдВ рдЕрдиреНрдп рд╕рдорд╕реНрдпрд╛рдПрдВ рдереАрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХреЗред

рд╣рд╛рдп @perliedman ,

рдЕрдЪреНрдЫреА рд░реВрдкрд░реЗрдЦрд╛!
рдпрд╣ рд╕рдВрджреЗрд╣ рдореИрдВ рдЬрд╡рд╛рдм рджреЗрддрд╛ рдерд╛ рдкреБрдирдГ рдЙрдкрдпреЛрдЧ рдЗрдирд▓рд╛рдЗрди рдЪрд┐рддреНрд░ рдХреА рдУрд░ рдиреАрдЪреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреАрдЖрд░ # 5041 рдХреЛ рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЬрдм рд╕реАрдПрд╕рдПрд╕ рдореЗрдВ рдЖрдЗрдХрди рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдЗрдирд▓рд╛рдЗрди рдХрд┐рдпрд╛ рдЬрд╛рдП (рд╡реЗрдмрдкреИрдХ рдЬреИрд╕реЗ рдмрд┐рд▓реНрдб рдЗрдВрдЬрди рджреНрд╡рд╛рд░рд╛) рддреЛ рдХреИрдЯрд▓реЙрдЧ рддреБрд░рдВрдд рдХрд╛рдо рдХрд░ рд╕рдХреЗред
рдЬрд┐рд╕ рд╕рдорд╛рдзрд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реВрдВ (рдЬреНрдпрд╛рджрд╛рддрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдкреАрдЖрд░ рдХреЗ рд╕рдорд╛рди) рдкреНрд░рддрд┐ рдЫрд╡рд┐ 1 рд╡рд░реНрдЧ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕реАрдПрд╕рдПрд╕ (рдФрд░ рд╢рд╛рдпрдж рдЬреЗрдПрд╕) рдлрд╝рд╛рдЗрд▓ рдЖрдХрд╛рд░ рдХреЛ рдХреБрдЫ рджрд░реНрдЬрдиреЛрдВ рдмрд╛рдЗрдЯреНрд╕ рддрдХ рдмрдврд╝рд╛ рджреЗрдЧрд╛ред

рдЙрджрд╛рд╣рд░рдг: http://playground-leaflet.rhcloud.com/dulox/1/edit?html ,css,output

рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ , рдпрд╣ рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╕рдВрдЧрддрддрд╛ рдХрд╛рд░рдг (рдмрд┐рд▓реНрдб рдЗрдВрдЬрди рдХреЗ рд╕рд╛рде) рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЙрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЗрди рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВред

рджреВрд╕рд░реА рдУрд░, рдкрд░рд┐рдгрд╛рдо "рдХреНрд▓реАрдирд░" рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо IconDefault рд╡рд░реНрдЧ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╣рд╛рд░реНрдб-рдХреЛрдбреЗрдб рдлрд╝рд╛рдЗрд▓ рдирд╛рдореЛрдВ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╕реАрдПрд╕рдПрд╕ рдХреЛ рдкреВрд░рд╛ рдкрде (рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рд╕рд╣рд┐рдд) рд╕реМрдВрдк рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХреНрдпреЛрдВрдХрд┐ (рдЕрдЧрд░ рдореИрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ) рдЗрд╕ рдЬрдЯрд┐рд▓ рдкрд╣рдЪрд╛рди рдХрд╛ рдкреВрд░рд╛ рдмрд┐рдВрджреБ рдЬреЗрдПрд╕ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд╕реНрдерд╛рди рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╕реАрдПрд╕рдПрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЙрдирдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╕реНрдерд╛рди рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдирд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рднреА CSS рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдлрд┐рд░ imagePath рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рднреА рдЬрдЯрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рд╕рдВрднрд╡рддрдГ рдЙрди рдЫрд╡рд┐ рдкрдереЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬреЛ рдкрд╣рд▓реЗ рдЦреЛрдЬреЗ рдЧрдП рдереЗ, рдЕрдЧреНрд░рдгреА рдкрде рдХреЛ рдмрджрд▓рдиреЗ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдПред рдЗрд╕рд▓рд┐рдП рд╣рдо рд╡рд╣рд╛рдВ рдПрдХ рдирдпрд╛ RegExp рдкреЗрд╢ рдХрд░реЗрдВрдЧреЗред

рдЕрдВрдд рдореЗрдВ, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╕рднреА рдорд╛рдорд▓реЛрдВ рдХреЛ рдХрд╡рд░ рдХрд░реЗрдЧрд╛ред
рдмрд┐рд▓реНрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдЕрддреНрдпрдзрд┐рдХ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╕реНрдерд┐рд░ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдЬреИрд╕реЗ рдЖрдЗрдХрди рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдмрд╣реБрдд рдЕрд▓рдЧ рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╣реЛрддреА рд╣реИрдВред рдЕрднреА рднреА рдХреБрдЫ рдХреЛрдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдКрдкрд░ рднреА рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

@ghybs рдореБрдЭреЗ рд╡рд╣ рдЙрджрд╛рд╣рд░рдг рдкрд╕рдВрдж рд╣реИ ( http://playground-leaflet.rhcloud.com/dulox/ )!

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЪреАрдЬреЗрдВ рдЕрддрд┐ рдХрд░ рд░рд╣реА рд╣реЛрдВ, рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕ рд╕реАрдПрд╕рдПрд╕ рдореЗрдВ рдЖрдЗрдХрди _size_ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ ( width рдФрд░ height )? рдореИрдВ рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЖрдЗрдХрди рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрди рд╕реАрдПрд╕рдПрд╕ рдирд┐рдпрдореЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд░рд╣рд╛ рд╣реИ, рдХреЗрд╡рд▓ рдЗрд╕реЗ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдм рдЧрд▓рдд рдЖрдпрд╛рдо рд╣реИрдВред

рд╕реАрдПрд╕рдПрд╕ рдореЗрдВ рдЖрдпрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдпрд╛ рдмрд┐рдирд╛, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдЕрдкрдиреЗ рдЙрджрд╛рд╣рд░рдг рдХреА рддрд░реНрдЬ рдкрд░ рдкреАрдЖрд░ рдмрдирд╛рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ? рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрднреА рд╕рдордп рдпрд╛ рдКрд░реНрдЬрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдореИрдВ рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕реЗ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдмрд╕ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдЖрдкрдХреЛ рдХреНрдпрд╛ рдкрд╕рдВрдж рд╣реИред

рдореИрдВ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕реБрдХ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рд╕реНрд╡рдпрдВ рдареЛрдХрд░ рдЦрд╛ рд░рд╣рд╛ рдерд╛ред

рд╣рд╛рдп @perliedman ,

рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рд╕реАрдПрд╕рдПрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреА рдЖрдЗрдХрди рдЖрдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ред

рд▓реЗрдХрд┐рди рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдирд┐рд░рдВрддрд░рддрд╛ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдПрдВрдХрд░ рдкреЙрдЗрдВрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рднреА рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреМрди рд╕рд╛ рд╕реАрдПрд╕рдПрд╕ рдирд┐рдпрдо рдЙрдкрдпреБрдХреНрдд рд╣реЛрдЧрд╛ (рд╢рд╛рдпрдж рдорд╛рд░реНрдЬрд┐рди?) рдпрджрд┐ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд░рд┐рдгрд╛рдо рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛: рдЖрдЗрдХрди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реАрдПрд╕рдПрд╕ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред

рдЗрд╕рд╕реЗ рднреА рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реБрдП, рдпрд╣ рдПрдХ рдЖрдЗрдХрди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рддрд░реАрдХрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ: 3 рд╕реАрдПрд╕рдПрд╕ рд╡рд░реНрдЧ (рдЖрдЗрдХрди, рд░реЗрдЯрд┐рдирд╛, рдЫрд╛рдпрд╛) рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ рдФрд░ рдкрддреНрд░рдХ рдЙрдирд╕реЗ рд╕рднреА рдЖрдЗрдХрди рд╡рд┐рдХрд▓реНрдк рдирд┐рдХрд╛рд▓реЗрдЧрд╛ред

рдХреГрдкрдпрд╛ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВ, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореБрдЭреЗ рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдХреБрдЫ рд╕рдордп рдХрдм рдорд┐рд▓реЗрдЧрд╛ ...

рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рдирд┐рд░реНрдорд╛рдг, рдпрд╣рд╛рдВ padding рдФрд░ margin рд╕реАрдПрд╕рдПрд╕ рдирд┐рдпрдореЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИ рддрд╛рдХрд┐ iconAnchor ( shadowAnchor ) рдФрд░ popupAnchor рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рд╡рд┐рдХрд▓реНрдк:
http://playground-leaflet.rhcloud.com/xuvi/1/edit?html ,css,output

рдореИрдВ рдЗрд╕ рддрдереНрдп рдХреА рддрд░рд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ padding рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП iconAnchor рдХреНрдпреЛрдВрдХрд┐ рдЕрдВрдд рдореЗрдВ рдкрддреНрд░рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, margin рдЖрдЗрдХрди рдЪрд┐рддреНрд░ рдХреЛ рд╕реНрдерд╛рди рджреЗрдиреЗ ...
рд▓реЗрдХрд┐рди рд╕реАрдПрд╕рдПрд╕ рдореЗрдВ рдЪреАрдЬреЛрдВ рдХреЛ рддреНрд╡рд░рд┐рдд рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдпрд╣ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рд▓рдЧрд╛, рдФрд░ рд╣рдо рдЖрдЗрдХрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдХреИрд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рд╕реЗ рдмрдЪреЗрдВред

рд╣рд╛рд▓рд╛рдБрдХрд┐ рдореБрдЭреЗ CSS рдореЗрдВ рд╕рдм рдХреБрдЫ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдкрд╕рдВрдж рд╣реИ, рдлрд┐рд░ рднреА L.Icon.Default.imagePath рдХреЗ рд╕рд╛рде рдкрд╢реНрдЪрдЧрд╛рдореА рд╕рдВрдЧрддрддрд╛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрднреА рдФрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдореБрдЭреЗ рдЦреЗрдж рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдкреАрдЖрд░ рдмрдирд╛рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реИред

рдореИрдВрдиреЗ рдЕрднреА рдПрдХ рдФрд░ рдорд╛рдорд▓реЗ рдХрд╛ рдирд┐рджрд╛рди рдХрд┐рдпрд╛ рд╣реИ рдЬрд╣рд╛рдВ _detectIconPath рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ: рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп (рдИрдПрд╕рдЖрд░ рдФрд░ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛) рдФрд░ рд╡рд░реАрдпрддрд╛рдПрдБ тЖТ рд╕рд╛рдордЧреНрд░реА тЖТ рд░рдВрдЧтАж тЖТ рдЕрдкрдиреЗ рдЪрдпрди рдХреЗ рд╕рд╛рде рдкреГрд╖реНрда рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд░рдВрдЧреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдВ: рд╣рдореЗрд╢рд╛ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рд╣рдЯрд╛ рджреЗрдЧрд╛ background-image рдЧреБрдг рдЬрд┐рд╕рдореЗрдВ .leaflet-default-icon-path рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ _detectIconPath рддреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд┐рддрдиреЗ рдЕрдиреНрдп рд▓реЛрдЧ рдЗрд╕ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рдмрд╣реБрдд рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдХреНрдпрд╛ url() рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдиреНрдп CSS-рдЧреБрдгреЛрдВ рдХреЗ рдореВрд▓реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реАрдПрд╕рдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рд╣реИ: .leaflet-default-icon-path { -leaflet-icon: url(images/marker-icon.png); } рдпрд╛ рдХрд╕реНрдЯрдо рд╕реАрдПрд╕рдПрд╕-рдЧреБрдгреЛрдВ рдХреЛ рд╕реНрд╡рдпрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдФрд░ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ? рдХрд┐рд╕реА рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ -leaflet-icon рд╕рдВрдкрддреНрддрд┐ рдХреЛ _рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЕрднреА рднреА рдЗрд╕реЗ рдкреЙрдкреНрдпреБрд▓реЗрдЯ рдХрд░рдиреЗ рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рдореВрд▓реНрдп рдХреЛ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рд╣рд╛рдп @roques ,

Firefox рдореЗрдВ рдЗрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреНрд░реЛрдо рдореЗрдВ рдПрдХ рдЙрдЪреНрдЪ рдХрдВрдЯреНрд░рд╛рд╕реНрдЯ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реИ, рд▓реЗрдХрд┐рди рдЬреЛ рдХреЗрд╡рд▓ рд░рдВрдЧ рдмрджрд▓рддрд╛ рд╣реИ, рдХреИрдЯрд▓реЙрдЧ рдореЗрдВ рдХреБрдЫ рднреА рддреЛрдбрд╝реЗ рдмрд┐рдирд╛ред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рд╕реАрдПрд╕рдПрд╕ рдЧреБрдгреЛрдВ рдХреЛ рдЫреАрди рд▓реЗрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕реЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИред
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЫрд╡рд┐ рд╕реАрдПрд╕рдПрд╕ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреБрдЫ рдЕрдиреНрдп рдирд┐рдпрдореЛрдВ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ cursor , рдЬреЛ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ рд░рдВрдЧ рдУрд╡рд░рд░рд╛рдЗрдб рд╕реЗрдЯрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рднреА рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
http://playground-leaflet.rhcloud.com/yov/1/edit?html ,css,output

рдореБрдЭреЗ cursor рдмрдЬрд╛рдп background-image рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрдо рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд▓рдЧрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реАрдПрд╕рдПрд╕ рд╕реНрдЯрд╛рдЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд╛рд░реНрдХрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдЬреЛ рдХрд░рддреЗ рд╣реИрдВ рдЙрд╕рд╕реЗ рдмрд╣реБрдд рдЖрдЧреЗ рд╣реИ ... рд▓реЗрдХрд┐рди рд╡реИрд╕реЗ рднреА рдпрд╣ рдкрде рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╣реИрдХ рд╣реИ рдХреЗрд╡рд▓ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ред

рдореИрдВ рд╡реЗрдмрдкреИрдХ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреАрдЖрд░ рдмрдирд╛рдиреЗ рд╡рд╛рд▓рд╛ рдерд╛, рдореИрдВ рдЕрднреА рдЗрд╕ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░реВрдВрдЧрд╛ред
рдореБрдЭреЗ рдХреЛрдИ рд╕реБрд░рд╛рдЧ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдорд╛рдзрд╛рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдЪреНрдЫрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХрд┐рд╕реА рдХреЛ рднреА рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕реНрдкрд╖реНрдЯ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛ рд╣реИ?

рдХреЛрдгреАрдп + рдХреЛрдгреАрдп CLI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП @Shiva127 рдХреЗ рдЙрддреНрддрд░ рдкрд░ рдирд┐рд░реНрдорд╛рдг:

рдЖрдк рдЗрд╕реЗ app.module.ts рдореЗрдВ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ:

// BUG https://github.com/Leaflet/Leaflet/issues/4968
import {icon, Marker} from 'leaflet';
const iconRetinaUrl = 'assets/marker-icon-2x.png';
const iconUrl = 'assets/marker-icon.png';
const shadowUrl = 'assets/marker-shadow.png';
const iconDefault = icon({
  iconRetinaUrl,
  iconUrl,
  shadowUrl,
  iconSize: [25, 41],
  iconAnchor: [12, 41],
  popupAnchor: [1, -34],
  tooltipAnchor: [16, -28],
  shadowSize: [41, 41]
});
Marker.prototype.options.icon = iconDefault;

рдФрд░ рдЕрдкрдиреЗ рдореЗрдВ рдЧреНрд▓реЛрдм рд▓рд╛рдЗрди рдЬреЛрдбрд╝реЗрдВ .angular-cli.json :

"assets": [
        "assets",
        "favicon.ico",
        { "glob": "**/*", "input": "../node_modules/leaflet/dist/images/", "output": "./assets/" }
      ],

рдпрд╣ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рдордп рдбрд┐рд╕реНрдЯрд░реНрдм рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЖрдЗрдХрди рдХреЛ рдПрд╕реЗрдЯ рдлреЛрд▓реНрдбрд░ рдореЗрдВ рдХреЙрдкреА рдХрд░ рджреЗрдЧрд╛ (рдЖрдк рдЙрдиреНрд╣реЗрдВ src/assets рдореЗрдВ рдирд╣реАрдВ рджреЗрдЦ рдкрд╛рдПрдВрдЧреЗ)ред рд╕рд╛рде рд╣реА, рд╡реИрд╢реНрд╡рд┐рдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╕рдВрд╢реЛрдзрд┐рдд рдЖрдпрд╛рдд (рдЬреИрд╕реЗ RxJS рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдкреИрдЪ) рдХреЛ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП app.module.ts рдХрд░рдирд╛ рдПрдХ рдЕрдЪреНрдЫреА рдЬрдЧрд╣ рд╣реИред рдЗрд╕рдХреЗ рд╕рд╛рде, рдорд╛рд░реНрдХрд░ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдирд╛ рдЬрд╣рд╛рдВ рдХреЛрдбрдмреЗрд╕ рдореЗрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рд░реНрдп рдХрд░реЗрдЧрд╛ред

рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЗрд╕ рддрд░рд╣ рдареАрдХ рдХрд┐рдпрд╛ рд╣реИред

рдореИрдВрдиреЗ рдорд╛рд░реНрдХрд░ рдбреНрд░реЙрдСрдкреНрд╢рди рдХреЛ рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЖрдЗрдХрди рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рд╣реИ:

const myIcon = L.icon({
    ...
    ...
});

const drawOptions = {
      ....
      marker: {
         icon: myIcon
      }
};

...

рдлрд┐рд░ L.Draw.Event.CREATED . рдкрд░ рдЖрдЗрдХрди рдХреЗ рд▓рд┐рдП рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛ рдкрде

this.map.on(L.Draw.Event.CREATED, (e) => {

      const layer: any = (e as L.DrawEvents.Created).layer;
      const type = (e as L.DrawEvents.Created).layerType;

      // Create a marker.
      if (type === 'marker') {

        let feature = layer.feature = layer.feature || {};
        feature.type = "Feature";
        feature.properties = feature.properties || {};
        feature.properties["markerIconsPath"] = "/assets/icons/";
       }
 });


рдЕрдВрдд рдореЗрдВ рдкрд░рддреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдкрд░ рдореИрдВрдиреЗ рдЗрдореЗрдЬрдкрд╛рде рд╕реЗрдЯ рдХрд┐рдпрд╛:

if(layer instanceof L.Marker) {
            L.Icon.Default.imagePath = layer.feature.properties.markerIconsPath;
            layer.setIcon(greenIcon);
 }

@codeofsumit рдХреНрдпрд╛ рдпреЗ рд╕реБрдзрд╛рд░ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг 1.3.1 рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ? рд╣реИрд░рд╛рдиреА рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рдореИрдВ рд╕рдВрд╕реНрдХрд░рдг 1.3.1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЕрднреА рднреА рдЙрд╕реА рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

@vishalrajole рдореЗрд░реА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрдорд┐рдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдХрдорд╛рддреНрд░ рдкреАрдЖрд░ # 5041 рд╣реИ, рдЬреЛ _long_ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдзрд┐рдд рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╕рд╛рде рдЦреБрд▓рд╛ рд╣реИред

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдорд╛рдзрд╛рди #5771 рднреА рд╣реИ, рдЬреЛ рдЕрдЪреНрдЫрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдФрд░ рдмрджрд▓рд╛рд╡ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

рддреЛ, рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ: рдХрд┐рд╕реА рдиреЗ рднреА рдЗрд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрд╡реАрдХреГрдд рдкреАрдЖрд░ рдЬрдорд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдорджрдж рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ!

@perliedman рдХреА рдирдЬрд╝рд░ рд╕реЗ рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ #5771 рдХрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдирд╣реАрдВ рддреЛ рдЖрдкрдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЖрддреА рд░рд╣реЗрдЧреАред рдХреНрдпреЛрдВ рди рд╕рд┐рд░реНрдл рдЗрд╕реЗ рдорд░реНрдЬ рдХрд░реЗрдВ?

рд╣рд╛рдп @ mb21 ,

#5771 рдХреЗ рд╢рд╛рдорд┐рд▓ рдкрд░рд┐рд╡рд░реНрддрди рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдкрд░рд┐рд╡рд░реНрддрди 2 рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реИрдВ:

  • рдХреЗрд╡рд▓ рдЫрд╡рд┐ рдлрд╝реЛрд▓реНрдбрд░ рд╕реНрдерд╛рди рдХреЗ рдмрдЬрд╛рдп рдкреНрд░рддреНрдпреЗрдХ рдЫрд╡рд┐ рдкрде рдХреЛ рдкрдврд╝рдирд╛, рддрд╛рдХрд┐ рдмрд┐рд▓реНрдб рдЗрдВрдЬрди (рдЬреИрд╕реЗ рд╡реЗрдмрдкреИрдХ рдлрд╝рд╛рдЗрд▓ рд▓реЛрдбрд░) рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдпреВрдЖрд░рдПрд▓ рдХреЛ рдкреБрдирд░реНрдирд┐рд░реНрдорд┐рдд/рдЕрдиреБрдорд╛рдирд┐рдд рдХреЗ рдмрдЬрд╛рдп рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХреЗред
  • рд╕реАрдПрд╕рдПрд╕ рд╕реЗ рдЕрдиреНрдп рд╕рднреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЖрдЗрдХрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдкрдврд╝рдирд╛, рддрд╛рдХрд┐ рд╕рднреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рдПрдХрддреНрд░рд┐рдд рд╣реЛ рдЬрд╛рдПрдВред

рджреВрд╕рд░рд╛ рдмрд┐рдВрджреБ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдпрджрд┐ рдкрд╣рд▓реЗ рд╡рд╛рд▓реЗ рдХреЛ рдЯрд╛рд▓рд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рд╡рд╣ рдХреБрдЫ рдХреЛрдб рдЬреЛрдбрд╝рддрд╛ рд╣реЛред

рдкрд╣рд▓рд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдмрд┐рд▓реНрдб рдЗрдВрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрдХреНрд╖ рд╣реИ рдЬреЛ рд╕реАрдПрд╕рдПрд╕ рдореЗрдВ рдпреВрдЖрд░рдПрд▓ рдХреЗ рд╕рд╛рде рдлрд┐рдбрд▓ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдирдП рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рднреА рдХреИрдЯрд▓реЙрдЧ _zero рдХреЙрдиреНрдлрд┐рдЧрд░ рд╕реНрдкрд┐рд░рд┐рдЯ_ рд░рдЦрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдбреЗрд╡рд▓рдкрд░ рдЕрдкрдиреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдЯреНрдпреВрди рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдлреА рд╕рдордп рдмрд┐рддрд╛рддрд╛ рд╣реИ (рдпрджрд┐ рдЖрдк рд╡реЗрдмрдкреИрдХ рдлрд╝рд╛рдЗрд▓ рд▓реЛрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╡реИрд╕реЗ рднреА рдПрдХ рдХрд╕реНрдЯрдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ), рдмрд╛рдХреА рд╕рднреА рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХреЛрдб рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреАрдордд рдкрд░, рдЬреЛ рдЖрдИрдПрдордПрдЪрдУ _рдПрдЧреЗрдВрд╕реНрдЯ_ рд▓реАрдлрд▓реЗрдЯ рд╕реНрдкрд┐рд░рд┐рдЯ рд╣реИ (рдХреЛрд░ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ, рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рд╕реМрдВрдкреЗрдВ)ред
рдЖрдк рдЫрд╡рд┐ рдкрде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдорддреМрд░ рдкрд░ require(image) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬреИрд╕рд╛ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рдХрдИ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП рднрд▓реЗ рд╣реА рдореИрдВрдиреЗ рдЙрд╕ рдкреАрдЖрд░ рдХреЛ рд▓рд┐рдЦрд╛ рд╣реЛ, рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдХреЛрд░ рдореЗрдВ рдорд░реНрдЬ рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рд╣рдЬ рдорд╣рд╕реВрд╕ рдХрд░рддрд╛ рд╣реВрдВред рдкрд░рд┐рд╡рд░реНрддрди _рдмрд╣реБрдордд рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ_ рд╣реИрдВред

рд╡реЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдореБрджреНрджрд╛ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдмрд┐рд▓реНрдб рдЗрдВрдЬрди/рдлреНрд░реЗрдорд╡рд░реНрдХ рд░реИрдкрд░ рдХреА рдмрд╛рддрдЪреАрдд рдХреЗ рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдХреА рдЕрдкрдиреА рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдкрд╛рд╕ рдпрд╣ рдмрддрд╛рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЫрд╡рд┐рдпрд╛рдВ рдЕрдм рдХрд╣рд╛рдВ рд╣реИрдВ, рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдПрдкреАрдЖрдИред

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмреЗрд╣рддрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЗ рд╕рд╛рде рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдорд╛рдг рдЗрдВрдЬрди/рдврд╛рдВрдЪреЗ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рдПрдХ рдЕрдиреБрднрд╛рдЧ?), рдФрд░/рдпрд╛ рдПрдХ рдкреНрд▓рдЧрдЗрди?

рдЦреИрд░, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдкреЗрдЪреАрджрдЧрд┐рдпреЛрдВ рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╕реАрдПрд╕рдПрд╕ рдореЗрдВ _all_ рдЫрд╡рд┐ рдкрде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рди рдХреЗрд╡рд▓ рд╡реЗрдмрдкреИрдХ-рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИрдВ, рдпрд╣ рдореЗрд░реЗ рдЬреИрд╕реЗ рд▓реЛрдЧ рднреА рд╣реИрдВ рдЬреЛ рд░реЗрд▓ рдпрд╛ Django рд╕рдВрдкрддреНрддрд┐ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдерд┐рд░ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рд╣реИрд╢ рдЬреЛрдбрд╝рддрд╛ рд╣реИ ...

рдореИрдВрдиреЗ рдмрд┐рд▓реНрдХреБрд▓ рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд┐рдпрд╛ рд╣реИ:
рдбреЗрдЯрд╛:рдЗрдореЗрдЬ/рдкреАрдПрдирдЬреА;рдмреЗрд╕64,рдЖрдИрд╡реАрдмреАрдУрдЖрд░рдбрдмреНрд▓реНрдпреВ0...AAAAASUVORK5CYII=")marker-shadow.png net::ERR_INVALID_URL

рд╕рдорд╛рдзрд╛рди рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реИ:

getIconUrl: function (name) {
        if (!IconDefault.imagePath) {   // Deprecated, backwards-compatibility only
            IconDefault.imagePath = this._detectIconPath();
        }

        // <strong i="8">@option</strong> imagePath: String
        // `Icon.Default` will try to auto-detect the location of the
        // blue icon images. If you are placing these images in a non-standard
        // way, set this option to point to the right path.
        return (this.options.imagePath || IconDefault.imagePath) + Icon.prototype._getIconUrl.call(this, name);
    },

рд╕рд╛рде:

 // ...
  const url = (this.options.imagePath || L.Icon.Default.imagePath);

  return url.slice(0, -2);

рдЬреИрд╕рд╛ рдХрд┐ codeofsumit рджреНрд╡рд╛рд░рд╛ рд╕реБрдЭрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдореИрдВрдиреЗ рдЗрд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╖реНрдЯрдкреНрд░рдж рдкрд╛рдпрд╛ рдФрд░ рдпрд╣ рддрдереНрдп рдХрд┐ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреАрдЖрд░ рд╣реИ рд▓реЗрдХрд┐рди "рдорд╣рд╕реВрд╕" рдХреЗ рдХрд╛рд░рдг рд╡рд┐рд▓рдп рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ рдХрд┐ "рдмрд╣реБрдордд рдХреЗ рд▓рд┐рдП рдкрд░рд┐рд╡рд░реНрддрди рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИрдВред" рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рд▓реЛрдЧреЛрдВ рдХреЛ PHP, RoR, Python (Django) рдФрд░ node.js рдореЗрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдВрдШрд░реНрд╖ рдХрд░рддреЗ рджреЗрдЦрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрди рд╕рдореВрд╣реЛрдВ рд╕реЗ рдкрд░реЗ "рдмрд╣реБрд╕рдВрдЦреНрдпрдХ" рдХрд╣рд╛рдВ рд╣реИ? рдЖрдк рдХрд┐рд╕ рд╕рдВрдЧрдд рдврд╛рдВрдЪреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░реЗрдВрдЧреЗ?

рдореИрдВ @macwis рд╕реЗ рд╕рд╣рдордд

рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдзрд╛рдЧрд╛ рдмрд╣реБрдд рд▓рдВрдмрд╛ рд╣реИред рдЬрдирд╕рдВрдкрд░реНрдХ рдХрд╛ рд╡рд┐рд▓рдп рдХреНрдпреЛрдВ рдирд╣реАрдВ?

рдпрд╣ рдПрдХ рднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдПрдХ рд╕рдЪреНрдЪрд╛рдИ рд╣реИ: рдмрд╣реБрд╕рдВрдЦреНрдпрдХ рдмрд┐рдирд╛ рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╛ рд╡реЗ рдЬреЛ рд╕реАрдПрд╕рдПрд╕ рдХреЗ рд╕рд╛рде рдЦрд┐рд▓рд╡рд╛рдбрд╝ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдЬрдм рдореИрдВрдиреЗ рдЬрд╛рдБрдЪ рдХреА рдереА, рддреЛ рдХреИрдЯрд▓реЙрдЧ рдЕрдирдкреИрдХ рд╕реАрдбреАрдПрди, рдпрд╛рдиреА рдЕрдирдмрдВрдбрд▓ рдФрд░ рдЕрдирдлрд╝рд┐рд▓реНрдб рд╕реАрдПрд╕рдПрд╕ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдирдВрдмрд░ 1 рдерд╛ред

рдЙрдЪрд┐рдд рд╕рдорд╛рдзрд╛рди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЖрдЗрдХрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рдХрдИ рд╕рдВрджреЗрд╢реЛрдВ рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдХрдИ рдЪреМрдЦрдЯреЗ рдЕрдкрдиреЗ рдкрддреНрд░рдХ рдПрдХреАрдХрд░рдг рдкреНрд▓рдЧрдЗрди рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВред

рдпрджрд┐ рдЖрдк рдЕрдзрд┐рдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕рдорд╛рдзрд╛рди рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рднреА рдЖрдкрдХреЗ рдкрд╛рд╕ рдкреНрд▓рдЧрдЗрди рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИред

рдЬрдирд╕рдВрдкрд░реНрдХ рдХрд╛ рд╡рд┐рд▓рдп рдХреНрдпреЛрдВ рдирд╣реАрдВ?

рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рдкрдврд╝реЗрдВ, рдЬреИрд╕реЗ https://github.com/Leaflet/Leaflet/issues/4968#issuecomment -382639119

рдореИрдВ рдмрд╕ рдереЛрдбрд╝рд╛ рд╕рд╛ рд╕рдВрдХреЗрдд рджреЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛: рдЖрдк рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╕реАрдбреАрдПрди рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╣рдо рдЕрдкрдиреЗ рд░рд┐рдПрдХреНрдЯ рдРрдк рдХреЗ рд╕рд╛рде рдпрд╣реА рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рд╕реАрдбреАрдПрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрдбрд╝реЗ libs рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВред

@ googol7 рдЖрдкрдХреЗ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдЕрдЧрд░ рдореИрдВ рдЧрд▓рдд рд╣реВрдВ рддреЛ рдХреГрдкрдпрд╛ рдореБрдЭреЗ рд╕реБрдзрд╛рд░реЗрдВ: рдпрджрд┐ рдЖрдк рд╕реАрдбреАрдПрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрддреНрд░рдХ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╢рд╛рдпрдж рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕рдХреЗ рд╕реАрдПрд╕рдПрд╕ рдХреЛ рдирд╣реАрдВ рдмрджрд▓рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрд╣реБрдордд рдореЗрдВ рд╣реИрдВред

@ghybs : рдореБрдЭреЗ рдЬреЛ рдХрд░рдирд╛ рдерд╛ рд╡рд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдерд╛:

// Workaround: https://github.com/Leaflet/Leaflet/issues/4968#issuecomment-269750768
/* eslint-disable no-underscore-dangle, global-require */
delete L.Icon.Default.prototype._getIconUrl

L.Icon.Default.mergeOptions({
    iconRetinaUrl: require("leaflet/dist/images/marker-icon-2x.png"),
    iconUrl: require("leaflet/dist/images/marker-icon.png"),
    shadowUrl: require("leaflet/dist/images/marker-shadow.png"),
})
/* eslint-enable no-underscore-dangle, global-require */

рд╣рдорд╛рд░реА рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:

module.exports = {
    externals: {
        leaflet: "L",
    },
}

@ googol7 рдЖрдкрдХреЗ

рддреЛ рдЖрдкрдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдк рд╕реАрдбреАрдПрди рд╕реЗ рдХреИрдЯрд▓реЙрдЧ рдЬреЗрдПрд╕ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕реАрдПрд╕рдПрд╕ рдФрд░ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдЕрдкрдиреЗ рдРрдк рдореЗрдВ рдмрдВрдбрд▓ рдХрд░рддреЗ рд╣реИрдВред

@ghybs рд╣рд╛рдБ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред

рдкрд╣рд▓реЗ рджреЛ рдЪрд░рдгреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ: https://leafletjs.com/examples/quick-start/
рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рдереА рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдХрд┐рд╕реА рдФрд░ рдХреЗ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рд╕реАрдПрд╕рдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП

<link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/leaflet.css" integrity="sha512-Rksm5RenBEKSKFjgI3a41vrjkw4EVPlJ3+OiI65vTjIdo9brlAacEuKOiQ5OFh7cOI1bkDwLqdLw3Zg0cRJAAQ==" crossorigin=""/>

рдФрд░ рдЙрд╕рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдкрддреНрд░рдХ рд▓рд┐рдкрд┐

<script src="https://unpkg.com/[email protected]/dist/leaflet.js" integrity="sha512-/Nsx9X4HebavoBvEBuyp3I7od5tA0UzAxs+j83KgC8PU0kgB4XiK4Lfe4y4cgBtaRJQEIFCW+oC506aPT2L1zw==" crossorigin=""></script>

рдирдорд╕реНрддреЗ,

рдореИрдВрдиреЗ рдХреИрдЯрд▓реЙрдЧ рдкреНрд▓рдЧрдЗрди " рд▓реАрдлрд▓реЗрдЯ-рдбрд┐рдлреЙрд▓реНрдЯрд┐рдХреЙрди-рд╕рдВрдЧрддрддрд╛ " рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдореЗрд░реЗ рдкреАрдЖрд░ https://github.com/Leaflet/Leaflet/pull/5771 рд╕реЗ рдХреЛрдб рд▓реЗрддрд╛ рд╣реИ
рдЙрд╕ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдХреИрдЯрд▓реЙрдЧ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЖрдЗрдХрди рдЕрдм рдЖрдЗрдХрди рдЫрд╡рд┐ рдкрде рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реАрдПрд╕рдПрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣, рдпрд╣ рдмрд┐рд▓реНрдб рдЗрдВрдЬрди рдФрд░ рдврд╛рдВрдЪреЗ рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрдЧрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реАрдПрд╕рдПрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИ (рдФрд░ рдЖрдорддреМрд░ рдкрд░ url() рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддрд╛ рд╣реИ)ред

рдмрд╕ рдкреНрд▓рдЧрдЗрди рд▓реЛрдб рдХрд░реЗрдВ (CSS + JS) _after_ USC.
рдЬреИрд╕реЗ рд╡реЗрдмрдкреИрдХ рдореЗрдВ:

import 'leaflet/dist/leaflet.css'
import 'leaflet-defaulticon-compatibility/dist/leaflet-defaulticon-compatibility.webpack.css'
import * as L from 'leaflet'
import 'leaflet-defaulticon-compatibility'

( рдбреЗрдореЛ )

рдЬрдмрдХрд┐ рдореИрдВ рд╕рдордЭ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдХрдИ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдЗрд╕ рддрд░рд╣ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд╕реАрдзреЗ рдХреИрдЯрд▓реЙрдЧ рдХреЛрд░ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд┐рдпрд╛ рд╣реЛрдЧрд╛, рдпрд╣ рддрд░реНрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдХреЛрдб рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдмреЗрдХрд╛рд░ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЗрд╕рдХреЗ рдореВрд▓ рдХреЛ рд╕рд░рд▓ рд░рдЦрдиреЗ рдХреА USC рднрд╛рд╡рдирд╛ рдХреЗ рд╕рд╛рде рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рдЗрд╕реЗ рдПрдХ рдкреНрд▓рдЧрдЗрди рдмрдирд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред

рдХреГрдкрдпрд╛ рдкреНрд▓рдЧрдЗрди рд░реЗрдкреЛ рдкрд░ рдПрдХ рдореБрджреНрджрд╛ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВ, рдЕрдЧрд░ рдЖрдкрдХреЛ рдкрд░реЗрд╢рд╛рдиреА рдпрд╛ рдЪрд┐рдВрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рд╡реЗрдмрдкреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЖрддреА рд╣реИред рдореБрдЭреЗ рд╡реЗрдмрдкреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕рд╛рдЗрдЯреЛрдВ рдХрд╛ рд░реБрдЭрд╛рди рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣рд╛ рд╣реИред рдЗрд╕реЗ рдкреНрд▓рдЧрдЗрди рдХреЗ рд░реВрдк рдореЗрдВ рд░рдЦрдирд╛ рдЖрджрд░реНрд╢ рд╕реЗ рдХрдо рд╣реИ, рдЖрдИрдПрдордПрдЪрдУ, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдореБрджреНрджреЗ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЛрдЧреЛрдВ рдХреЛ рдкреНрд▓рдЧрдЗрди рдХреА рддрд▓рд╛рд╢ рдирд╣реАрдВ рд╣реИ (рдЬреИрд╕реЗ рдореИрдВрдиреЗ рдПрдХ рдбреБрдкреНрд▓реА рдЦреЛрд▓рд╛ рдерд╛)ред
рдореИрдВ рдЗрд╕реЗ рдЕрдВрджрд░ рдХреЗ рдкрддреНрд░рдХ рдХреЛ рджреЗрдЦрдирд╛ рдмрд╣реБрдд рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдлреАрдЪрд░ рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдмрдЧ рдлрд┐рдХреНрд╕ рд╣реИ ...

рдпрджрд┐ рдЖрдк рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдХреЛрдгреАрдп 6 рдореЗрдВ рд╣рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдмрд╕ angular.json рдореЗрдВ рд▓рд┐рдЦреЗрдВ:

 {
         "glob": "**/*",
         "input": "./node_modules/leaflet/dist/images/",
         "output": "./assets/leaflet/"
  }

рдЙрд╕рдХреЗ рдмрд╛рдж, Marker рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рдЙрддреНрддрд░реЛрдВ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ:

import { Icon, icon, Marker, marker } from 'leaflet';

@Component({
   selector: 'app-something',
   templateUrl: './events.component.html',
   styleUrls: ['./events.component.scss']
})
export class SomeComponent implements OnInit {
  // Override default Icons
  private defaultIcon: Icon = icon({
    iconUrl: 'assets/leaflet/marker-icon.png',
    shadowUrl: 'assets/leaflet/marker-shadow.png'
  });

  ngOnInit() {
     Marker.prototype.options.icon = this.defaultIcon;
  }
}

рдореИрдВрдиреЗ рдЬрд┐рд╕ рдХреЛрдгреАрдп рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛ рдФрд░ рдпрд╣рд╛рдБ рднреА рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рдереА: ngx-leaflet

рдзреНрдпрд╛рди рджреЗрдВ:
рдХреЛрдгреАрдп 6 рдореЗрдВ рдЫреЛрдЯреА рдкрдХрдбрд╝ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ StackOverflow рдкрд░ _t.animal_ рд╕реЗ рдЙрддреНрддрд░

рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдПрдВрдЧреБрд▓рд░ 6 рдореЗрдВ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЯ build рдФрд░ test рдореЗрдВ рджреЛ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдмрд┐рд▓реНрдбрд░реНрд╕ рд╣реИрдВред

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдиреЗ рдЗрд╕реЗ build рдЕрдВрддрд░реНрдЧрдд рд░рдЦрд╛ рд╣реИред

@ рдорд╛рд░реНрдХреЛ-рдЬреЛрд╡рд╛рдиреЛрд╡рд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдореИрдВ рдЗрди рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЕрдкрдиреЗ рдкреИрдХреЗрдЬ рдХрд╛ рдЖрдХрд╛рд░ рдХрдо рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ?
рдЖрдкрдХрд╛ рд╕реБрдЭрд╛рд╡ рдЕрднреА рднреА рдПрдХ рд╕рдорд╛рдзрд╛рди, рдЖрдИрдПрдордУ рдХреА рдореЗрд░реА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдЖрддрд╛ рд╣реИред

@HarelM рд╡реИрд╕реЗ рдореИрдВ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЖ рд╕рдХрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд╕реНрдХреВрд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдЬрд▓реНрджреА рдореЗрдВ рдерд╛ред рдпрд╣ рд╕рд╣реА рдирд╣реАрдВ рд╣реИ рдФрд░ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкреИрдХреЗрдЬ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рдореЗрд░реЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдерд╛, рдФрд░ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореЗрд░рд╛ рдЙрддреНрддрд░ рдХрд┐рд╕реА рднреА рддрд░рд╣ рджреВрд╕рд░реЛрдВ рдХреА рднреА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред

@ рдорд╛рд░реНрдХреЛ-рдЬреЛрд╡рд╛рдиреЛрд╡рд┐рдХ рдЖрдкрдХрд╛ рд╕рдорд╛рдзрд╛рди рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рднреА рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рджреВрд╕рд░реЛрдВ рдХреА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рд╕рд┐рд░реНрдл рд╕рдорд╛рдзрд╛рди рдХреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдХрд╛рдордХрд╛рдЬ рдирд╣реАрдВ :-)

@ рдорд╛рд░реНрдХреЛ-рдЬреЛрд╡рд╛рдиреЛрд╡рд┐рдХ рд╣рд╛рдп, рдореИрдВ рднреА рдПрдХ рд╕реНрдХреВрд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ (рдХреЛрдгреАрдп 6) рдкрд░ рдмреИрдард╛ рд╣реВрдВ рдФрд░ рдпрд╣ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрддрд╛ рдХрд┐ рд╕рд╛рдорд╛рди рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдХрд╣реВрдВ рддреЛ рдореИрдВ рдпрд╣рд╛рдВ рдЗрди рд╕рднреА рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдиреЛрдм рд╣реВрдВред

рдЬрдм рдореИрдВ рдЕрдкрдиреЗ рдШрдЯрдХ рдХреЗ ngOnInit -Function рдореЗрдВ рдЖрдкрдХрд╛ рдХреЛрдб рдбрд╛рд▓рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдЙрд╕ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдк iconUrl рдФрд░ shadowUrl :

Argument of type '{ iconUrl: (options: IconOptions) => Icon<IconOptions>; shadowUrl: any; }' is not assignable to parameter of type 'IconOptions'. Types of property 'iconUrl' are incompatible. Type '(options: IconOptions) => Icon<IconOptions>' is not assignable to type 'string'.

рдХреНрдпрд╛ рдореИрдВ рдХреБрдЫ рднреВрд▓ рд░рд╣рд╛ рд╣реВрдБ? рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдзрдиреНрдпрд╡рд╛рдж!

@gittiker рдореИрдВрдиреЗ рдЖрдпрд╛рдд, рдШрдЯрдХ рдФрд░ ngOnInit рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рдЙрддреНрддрд░ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИред рд╕рдм рдХреБрдЫ рдареАрдХ рд░рд╣рд╛ рддреЛ рдмрддрд╛рдПрдВред :)

@gittiker рдореИрдВрдиреЗ рдЖрдпрд╛рдд, рдШрдЯрдХ рдФрд░ ngOnInit рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рдЙрддреНрддрд░ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИред рд╕рдм рдХреБрдЫ рдареАрдХ рд░рд╣рд╛ рддреЛ рдмрддрд╛рдПрдВред :)

рд╣рд╛рдБ рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рдЕрдВрдд рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдЖрдкрдХреЗ URL рдореЗрдВ рдереЛрдбрд╝рд╛ рд╣реЗрд░рдлреЗрд░ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╣реИ
'assets/leaflet/images/marker-icon.png рдмрдЬрд╛рдп 'assets/leaflet/marker-icon.png', ред рд╡рд╣реА рдЫрд╛рдпрд╛ рдЫрд╡рд┐ рдХреЗ рд▓рд┐рдП рдЬрд╛рддрд╛ рд╣реИред

@ crob611 рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВрдиреЗ рдЗрд╕ рд╡рд┐рдзрд┐ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред

@ рдорд╛рд░реНрдХреЛ-рдЬреЛрд╡рд╛рдиреЛрд╡рд┐рдХ рддреБрдордиреЗ рдореБрдЭреЗ рдмрдЪрд╛ рд▓рд┐рдпрд╛! рд▓реЗрдХрд┐рди рдХреИрд╕реЗ @HarelM рдХрд╣рддреЗ рд╣реИрдВ, рдХреНрдпрд╛ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ?

рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд▓рд┐рдП рдЗрд╕рдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рджрд┐рдпрд╛: (рдХреЛрдгреАрдп 6 рдФрд░ рдкрддреНрд░рдХ 1.3.4)
рдкрд╣рд▓рд╛ рдХрджрдо
(https://codehandbook.org/use-leaflet-in-angular/)
рд▓реЗрдХрд┐рди рддрдм рдЖрдЗрдХрди рдирд╣реАрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛
рддреНрд░реБрдЯрд┐ рдЖрдЗрдХрди рдЫрд╡рд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
рдиреЗрдЯ :: ERR_INVALID_URL
рдШрдЯрдХ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдбрд╛рд▓рдХрд░ рдЗрд╕реЗ рд╣рд▓ рдХрд░реЗрдВ
L.Icon.Default.prototype._getIconUrl;` . рд╣рдЯрд╛рдПрдВ

L.Icon.Default.mergeOptions({
  iconRetinaUrl: '/assets/leaflet/dist/images/marker-icon-2x.png',
  iconUrl: '/assets/leaflet/dist/images/marker-icon.png',
  shadowUrl: '/assets/leaflet/dist/images/marker-shadow.png',
});`

vue2-рдкрддреНрд░рдХ 1.2.3 рдХреЗ рд╕рд╛рде рдкрддреНрд░рдХ 1.3.4 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╛рдзрд╛рди:

import { L, LControlAttribution, LMap, LTileLayer, LMarker, LGeoJson, LPopup } from 'vue2-leaflet'
delete L.Icon.Default.prototype._getIconUrl
L.Icon.Default.mergeOptions({
  iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'),
  iconUrl: require('leaflet/dist/images/marker-icon.png'),
  shadowUrl: require('leaflet/dist/images/marker-shadow.png')
})

рдореЗрд░реЗ 2 рд╕реЗрдВрдЯ: рд╡реЗрдмрдкреИрдХ рдХреЗ рд╕рд╛рде рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рд╕рд┐рд░реНрдл рд╣реИрд╢ рдХрд┐рдП рдЧрдП рдлрд╝рд╛рдЗрд▓ рдирд╛рдореЛрдВ рдХреЗ рдХрд╛рд░рдг рдереА, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд╣реИрд╢ рд▓реАрдлрд▓реЗрдЯ рдХреА рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП file-loader рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рд╣реИ:

use: [{
    loader: 'file-loader',
    options:
      {
        name(file) {
          console.log(file)
          if (file.match(/(layers-2x\.png|layers\.png|marker-icon\.png|marker-icon-2x\.png|marker-shadow\.png)/)) {
            return '[name].[ext]'
          }

          return '[name]-[hash].[ext]'
        },
        context: 'app/frontend' // <-- project specific
      }
  }]

рдХрдареЛрд░ рд▓реЗрдХрд┐рди рдХреБрд╢рд▓ AFAIKред

@ghybs рд╣реЙрдЯрдлрд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЗрд╕ рдмрдЧ рдореЗрдВ рдХрдИ рдмрд╛рд░ рднрд╛рдЧ рдЪреБрдХрд╛ рд╣реВрдВред рдпрд╣ рдкреВрд░рд╛ рд╕реВрддреНрд░ рдмреЗрддреБрдХрд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдареАрдХ рдирд╣реАрдВ рд╣реИ рдпрд╛ рдЗрд╕реЗ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рджреЗрдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЧреВрдЧрд▓ рдиреЗ рдореБрдЭреЗ рдпрд╣рд╛рдБ рдЗрд╕рд▓рд┐рдП рд▓рд╛рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗрдмрдкреИрдХ рдХреЗ рд╕рд╛рде рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рдереАред

рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдЙрди рдЫрд╡рд┐рдпреЛрдВ рдХреЛ svg рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрдпреЛрдВ рд░реЗрдЦрд╛рдВрдХрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ postcss рдФрд░ postcss-inline-svg рдХреЗ рд╕рд╛рде рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдЗрдХрди рдмрд╛рд╣рд░реА png рдмрдЬрд╛рдп рдЗрдирд▓рд╛рдЗрди svg рдлрд╝рд╛рдЗрд▓реЗрдВ рдмрди рдЬрд╛рдПрдВрдЧреЗред рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рджреВрд░ рд╣реЛрдЧреА, рдЖрдЗрдХреЙрди рдХреНрд░рд┐рд╕реНрдк рд╣реЛрдВрдЧреЗред

рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдЙрди рдЫрд╡рд┐рдпреЛрдВ рдХреЛ svg рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрдпреЛрдВ рд░реЗрдЦрд╛рдВрдХрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?

рд▓реАрдЧреЗрд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдорд░реНрдердиред

рдзрдиреНрдпрд╡рд╛рдж @IvanSanchez

рддрдм рдореБрдЭреЗ рджреЛ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред рдПрдХ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдмреЗрд╕ 64 рдПрдиреНрдХреЛрдбреЗрдб .png рд░реВрдк рдореЗрдВ рдЗрдирд▓рд╛рдЗрди рдХрд░рдирд╛ рд╣реИред рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк .svg рдЖрдЗрдХрдиреЛрдВ рдХреЛ рдЗрдирд▓рд╛рдЗрди рдХрд░рдирд╛ рдФрд░ рдбрд┐рдлреЙрд▓реНрдЯ рдЖрдЗрдХрди рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реАрдЧреЗрд╕реА рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рджреЗрд╡ рдмрдирд╛рдирд╛ рд╣реИред

рдХреНрдпрд╛ рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд╛рдпрдХ рд╣реИ?

рд▓реАрдлрд▓реЗрдЯ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╕рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рд╕реЗ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЗрдВ svg ( caniuse ) рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИред

  • рдЖрдИрдИ 7 рдФрд░ 8
  • рдПрдВрдбреНрд░реЙрдЗрдб рдмреНрд░рд╛рдЙрдЬрд╝рд░ 2.*

рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдмреЗрд╕ 64 рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдирд▓рд╛рдЗрди рдХрд░реЗрдВ

рджреЗрдЦреЗрдВ https://github.com/Leaflet/Leaflet/issues/4968#issuecomment -322422045

рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдВрдХрд░ рдФрд░ рдЖрдХрд╛рд░ рднреА рдЬреЛрдбрд╝рдирд╛ рдкрдбрд╝рд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП

   import icon from 'leaflet/dist/images/marker-icon.png';
   import iconShadow from 'leaflet/dist/images/marker-shadow.png';

   let DefaultIcon = L.icon({
      iconUrl: icon,
      shadowUrl: iconShadow,
      iconSize: [24,36],
      iconAnchor: [12,36]
    });

    L.Marker.prototype.options.icon = DefaultIcon; 

рдореЗрд░реЗ рдкрд╛рд╕ рднреА рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ (рдлреНрд▓рд╛рд╕реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реЗрдмрдкреИрдХ, рдЗрд╕рд▓рд┐рдП рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЛ рдПрдХ рд╕реНрдерд┐рд░ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ), рд▓реЗрдХрд┐рди @ рдЬрд┐рдпреЛрд░реНрдЧреА-рдПрдо рдлрд┐рдХреНрд╕ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ '' рдирд┐рд░реНрдпрд╛рдд "рдХреЗрд╡рд▓-рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ" рддреНрд░реБрдЯрд┐ ( рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕, рдкреАрдПрдирдЬреА рдЖрдпрд╛рдд рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ?)
рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдмрдВрдж рд╣реЛ рдЧрдИ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЕрднреА рднреА 1.4.0 рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдБ рджреЗрдЦрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рд╕рдорд╛рдзрд╛рди рдХреНрдпрд╛ рд╣реИ?

рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ vue2-рдкрддреНрд░рдХ 2.0.2 рдФрд░ рдкрддреНрд░рдХ 1.4.0 рдХреЗ рд╕рд╛рде рджреЗрдЦрдирд╛ред

рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдлреА рд╕рдордп рд╕реЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдореЗрдВ рд╣реИ, рдФрд░ рдкреНрд░рд╕реНрддреБрдд рд╕рдорд╛рдзрд╛рдиреЛрдВ рдореЗрдВ рд╕реЗ рдЖрдзреЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреА рдЬрдбрд╝ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рд╣реИ?

рдореБрдЭреЗ "vue2-leaflet": "2.0.3" рд▓реАрдлрд▓реЗрдЯ "рд▓реАрдлрд▓реЗрдЯ": "1.4.0" рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИред

рд╡реЗрдмрдкреИрдХ рднреА рдЪрд▓рд╛ рд░рд╣реЗ рд╣реИрдВред

рд╣рдо рдЗрд╕реА рдореБрджреНрджреЗ рдореЗрдВ рдкрд╛рдП рдЧрдП рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ vue2-рдкрддреНрд░рдХ 2.0.3 рдФрд░ рдкрддреНрд░рдХ 1.4.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:

import L from 'leaflet'
require('../../node_modules/leaflet/dist/leaflet.css')

// FIX leaflet's default icon path problems with webpack
delete L.Icon.Default.prototype._getIconUrl
L.Icon.Default.mergeOptions({
  iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'),
  iconUrl: require('leaflet/dist/images/marker-icon.png'),
  shadowUrl: require('leaflet/dist/images/marker-shadow.png')
})

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмреЗрд╣рддрд░ рд╕рд╡рд╛рд▓ рдкреВрдЫрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣ рдорд░реНрдЬ рдХрд┐рдП рдЧрдП рдХреЛрдб рдХреЗ рд╕рд╛рде рдХреНрдпреЛрдВ рддрдп рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЬрд┐рд╕рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдмрдВрдж рд╣реЛ рдЧрдИ? рдЪреВрдВрдХрд┐ рдПрдХ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдЬреЛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЕрднреА рднреА рдПрдХ рдЦреБрд▓рд╛ рдореБрджреНрджрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдкреНрд░рд┐рдп рд╕рд╛рдерд┐рдпреЛ,

рдкрддреНрд░рдХ рдЖрдЙрдЯ-рдСрдлрд╝-рдж-рдмреЙрдХреНрд╕ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рд╡реЗрдмрдкреИрдХ (рдФрд░ рдЕрдиреНрдп рдмрд┐рд▓реНрдб рдЗрдВрдЬрди) рдХреИрдЯрд▓реЙрдЧ рдХреЗ рд╕рд╛рде рд╕рдВрдпреБрдХреНрдд рд░реВрдк рд╕реЗ рдЖрдЙрдЯ-рдСрдл-рдж-рдмреЙрдХреНрд╕ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдХреГрдкрдпрд╛ https://github.com/Leaflet/Leaflet/issues/4968#issuecomment -399857656 рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рджреЗрдЦреЗрдВ: рдкрддреНрд░рдХ- рдбрд┐рдлреЙрд▓реНрдЯрд┐рдХреЙрди

рдЬрдмрдХрд┐ рдореИрдВ рд╕рдордЭ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдХрдИ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдЗрд╕ рддрд░рд╣ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд╕реАрдзреЗ рдХреИрдЯрд▓реЙрдЧ рдХреЛрд░ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд┐рдпрд╛ рд╣реЛрдЧрд╛, рдпрд╣ рддрд░реНрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдХреЛрдб рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдмреЗрдХрд╛рд░ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЗрд╕рдХреЗ рдореВрд▓ рдХреЛ рд╕рд░рд▓ рд░рдЦрдиреЗ рдХреА USC рднрд╛рд╡рдирд╛ рдХреЗ рд╕рд╛рде рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рдЗрд╕реЗ рдПрдХ рдкреНрд▓рдЧрдЗрди рдмрдирд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред

рд╡реЗрдмрдкреИрдХ рдХреЗ рд╕рд╛рде, рдПрдХ рдФрд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдорд╛рдзрд╛рди , рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк рдЕрдкрдиреЗ рд▓реЛрдбрд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд▓реЗрддреЗ рд╣реИрдВ:

import L from 'leaflet';
delete L.Icon.Default.prototype._getIconUrl;

L.Icon.Default.mergeOptions({
  iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'),
  iconUrl: require('leaflet/dist/images/marker-icon.png'),
  shadowUrl: require('leaflet/dist/images/marker-shadow.png'),
});

рдЕрдиреНрдп рдмрд┐рд▓реНрдб рдЗрдВрдЬрди рдФрд░ рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдереНрд░реЗрдб рдореЗрдВ рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рди рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╣реИрдВред

рдЗрди рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рддрд╣рдд рдФрд░ рдЕрдзрд┐рдХ рджрдмрдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЗрд╕ рдзрд╛рдЧреЗ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВред

рд╕рд╛рдЭрд╛ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдЖрдк рд╕рднреА рдХрд╛ рдзрдиреНрдпрд╡рд╛рдж! :+1:

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

CallMarl picture CallMarl  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

viswaug picture viswaug  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jblarsen picture jblarsen  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

broofa picture broofa  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

pgeyman picture pgeyman  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ