Loading the leaflet Map in Lightning Web ComponentDynamic component creation in Lightning Web ComponentsWhy Lightning Web ComponentLightning Web Component - Custom NamesSalesforce Lightning Web ComponentGoogle Recaptcha V3 Implementation in Lightning Web ComponentLightning Web ComponentArray.push() won't update Lightning Web Component Viewdata Binding in lightning web componentLightning Web Component Invalid Field Highlight IssueAdd Lightning Web Component to Lightning Tab

Suggestions on how to spend Shaabath (constructively) alone

What (if any) is the reason to buy in small local stores?

Synchronized implementation of a bank account in Java

Do native speakers use "ultima" and "proxima" frequently in spoken English?

I seem to dance, I am not a dancer. Who am I?

Why is indicated airspeed rather than ground speed used during the takeoff roll?

If "dar" means "to give", what does "daros" mean?

Help rendering a complicated sum/product formula

Am I eligible for the Eurail Youth pass? I am 27.5 years old

What does Jesus mean regarding "Raca," and "you fool?" - is he contrasting them?

Bash - pair each line of file

What is the significance behind "40 days" that often appears in the Bible?

How to terminate ping <dest> &

Using Past-Perfect interchangeably with the Past Continuous

How are passwords stolen from companies if they only store hashes?

gerund and noun applications

Why is there so much iron?

Light propagating through a sound wave

How does 取材で訪れた integrate into this sentence?

How to get the n-th line after a grepped one?

What favor did Moody owe Dumbledore?

Could Sinn Fein swing any Brexit vote in Parliament?

Recruiter wants very extensive technical details about all of my previous work

Asserting that Atheism and Theism are both faith based positions



Loading the leaflet Map in Lightning Web Component


Dynamic component creation in Lightning Web ComponentsWhy Lightning Web ComponentLightning Web Component - Custom NamesSalesforce Lightning Web ComponentGoogle Recaptcha V3 Implementation in Lightning Web ComponentLightning Web ComponentArray.push() won't update Lightning Web Component Viewdata Binding in lightning web componentLightning Web Component Invalid Field Highlight IssueAdd Lightning Web Component to Lightning Tab













3















When I am trying to load the lightning web component map is not loading.



<template>
<div id="map" lwc:dom="manual"></div>
</template>

import LightningElement,api from 'lwc';
import ShowToastEvent from 'lightning/platformShowToastEvent';
import loadScript, loadStyle from 'lightning/platformResourceLoader';
import leaflet from '@salesforce/resourceUrl/leaflet';


export default class Leaflet extends LightningElement
@api leafletInitialized = false;
@api recordId;
renderedCallback()
if (this.leafletInitialized)
return;

this.leafletInitialized = true;

Promise.all([
loadScript(this, leaflet + 'leaflet/leaflet.js'),
loadStyle(this, leaflet + '/leaflet/leaflet.css')
])
.then(() =>
this.initializeleaflet();
)
.catch(error =>
this.dispatchEvent(
new ShowToastEvent(
title: 'Error loading D3',
message: error.message,
variant: 'error'
)
);
);


initializeleaflet()
var map = L.map('map').setView([39.7392, -104.991531], 14);
mapLink =
'<a href="http://openstreetmap.org">OpenStreetMap</a>';
L.tileLayer(
'http://s.tile.openstreetmap.org/z/x/y.png',
attribution: '&copy; ' + mapLink + ' Contributors',
maxZoom: 18,
).addTo(map);












share|improve this question






















  • any error or warning in the console?

    – glls
    2 hours ago











  • TypeError: Cannot read property 'message' of undefined at leafletInitialized.Promise.all.then.catch.a (leaflet.js:4),Uncaught (in promise) TypeError: Cannot read property 'message' of undefined at leafletInitialized.Promise.all.then.catch.a (leaflet.js:4)

    – Vidhyasagaran Muralidharan
    2 hours ago












  • also, where are you trying to use your component? LEX, communities?

    – glls
    2 hours ago











  • lightning home page

    – Vidhyasagaran Muralidharan
    2 hours ago















3















When I am trying to load the lightning web component map is not loading.



<template>
<div id="map" lwc:dom="manual"></div>
</template>

import LightningElement,api from 'lwc';
import ShowToastEvent from 'lightning/platformShowToastEvent';
import loadScript, loadStyle from 'lightning/platformResourceLoader';
import leaflet from '@salesforce/resourceUrl/leaflet';


export default class Leaflet extends LightningElement
@api leafletInitialized = false;
@api recordId;
renderedCallback()
if (this.leafletInitialized)
return;

this.leafletInitialized = true;

Promise.all([
loadScript(this, leaflet + 'leaflet/leaflet.js'),
loadStyle(this, leaflet + '/leaflet/leaflet.css')
])
.then(() =>
this.initializeleaflet();
)
.catch(error =>
this.dispatchEvent(
new ShowToastEvent(
title: 'Error loading D3',
message: error.message,
variant: 'error'
)
);
);


initializeleaflet()
var map = L.map('map').setView([39.7392, -104.991531], 14);
mapLink =
'<a href="http://openstreetmap.org">OpenStreetMap</a>';
L.tileLayer(
'http://s.tile.openstreetmap.org/z/x/y.png',
attribution: '&copy; ' + mapLink + ' Contributors',
maxZoom: 18,
).addTo(map);












share|improve this question






















  • any error or warning in the console?

    – glls
    2 hours ago











  • TypeError: Cannot read property 'message' of undefined at leafletInitialized.Promise.all.then.catch.a (leaflet.js:4),Uncaught (in promise) TypeError: Cannot read property 'message' of undefined at leafletInitialized.Promise.all.then.catch.a (leaflet.js:4)

    – Vidhyasagaran Muralidharan
    2 hours ago












  • also, where are you trying to use your component? LEX, communities?

    – glls
    2 hours ago











  • lightning home page

    – Vidhyasagaran Muralidharan
    2 hours ago













3












3








3


1






When I am trying to load the lightning web component map is not loading.



<template>
<div id="map" lwc:dom="manual"></div>
</template>

import LightningElement,api from 'lwc';
import ShowToastEvent from 'lightning/platformShowToastEvent';
import loadScript, loadStyle from 'lightning/platformResourceLoader';
import leaflet from '@salesforce/resourceUrl/leaflet';


export default class Leaflet extends LightningElement
@api leafletInitialized = false;
@api recordId;
renderedCallback()
if (this.leafletInitialized)
return;

this.leafletInitialized = true;

Promise.all([
loadScript(this, leaflet + 'leaflet/leaflet.js'),
loadStyle(this, leaflet + '/leaflet/leaflet.css')
])
.then(() =>
this.initializeleaflet();
)
.catch(error =>
this.dispatchEvent(
new ShowToastEvent(
title: 'Error loading D3',
message: error.message,
variant: 'error'
)
);
);


initializeleaflet()
var map = L.map('map').setView([39.7392, -104.991531], 14);
mapLink =
'<a href="http://openstreetmap.org">OpenStreetMap</a>';
L.tileLayer(
'http://s.tile.openstreetmap.org/z/x/y.png',
attribution: '&copy; ' + mapLink + ' Contributors',
maxZoom: 18,
).addTo(map);












share|improve this question














When I am trying to load the lightning web component map is not loading.



<template>
<div id="map" lwc:dom="manual"></div>
</template>

import LightningElement,api from 'lwc';
import ShowToastEvent from 'lightning/platformShowToastEvent';
import loadScript, loadStyle from 'lightning/platformResourceLoader';
import leaflet from '@salesforce/resourceUrl/leaflet';


export default class Leaflet extends LightningElement
@api leafletInitialized = false;
@api recordId;
renderedCallback()
if (this.leafletInitialized)
return;

this.leafletInitialized = true;

Promise.all([
loadScript(this, leaflet + 'leaflet/leaflet.js'),
loadStyle(this, leaflet + '/leaflet/leaflet.css')
])
.then(() =>
this.initializeleaflet();
)
.catch(error =>
this.dispatchEvent(
new ShowToastEvent(
title: 'Error loading D3',
message: error.message,
variant: 'error'
)
);
);


initializeleaflet()
var map = L.map('map').setView([39.7392, -104.991531], 14);
mapLink =
'<a href="http://openstreetmap.org">OpenStreetMap</a>';
L.tileLayer(
'http://s.tile.openstreetmap.org/z/x/y.png',
attribution: '&copy; ' + mapLink + ' Contributors',
maxZoom: 18,
).addTo(map);









lightning lightning-web-components






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked 3 hours ago









Vidhyasagaran MuralidharanVidhyasagaran Muralidharan

390316




390316












  • any error or warning in the console?

    – glls
    2 hours ago











  • TypeError: Cannot read property 'message' of undefined at leafletInitialized.Promise.all.then.catch.a (leaflet.js:4),Uncaught (in promise) TypeError: Cannot read property 'message' of undefined at leafletInitialized.Promise.all.then.catch.a (leaflet.js:4)

    – Vidhyasagaran Muralidharan
    2 hours ago












  • also, where are you trying to use your component? LEX, communities?

    – glls
    2 hours ago











  • lightning home page

    – Vidhyasagaran Muralidharan
    2 hours ago

















  • any error or warning in the console?

    – glls
    2 hours ago











  • TypeError: Cannot read property 'message' of undefined at leafletInitialized.Promise.all.then.catch.a (leaflet.js:4),Uncaught (in promise) TypeError: Cannot read property 'message' of undefined at leafletInitialized.Promise.all.then.catch.a (leaflet.js:4)

    – Vidhyasagaran Muralidharan
    2 hours ago












  • also, where are you trying to use your component? LEX, communities?

    – glls
    2 hours ago











  • lightning home page

    – Vidhyasagaran Muralidharan
    2 hours ago
















any error or warning in the console?

– glls
2 hours ago





any error or warning in the console?

– glls
2 hours ago













TypeError: Cannot read property 'message' of undefined at leafletInitialized.Promise.all.then.catch.a (leaflet.js:4),Uncaught (in promise) TypeError: Cannot read property 'message' of undefined at leafletInitialized.Promise.all.then.catch.a (leaflet.js:4)

– Vidhyasagaran Muralidharan
2 hours ago






TypeError: Cannot read property 'message' of undefined at leafletInitialized.Promise.all.then.catch.a (leaflet.js:4),Uncaught (in promise) TypeError: Cannot read property 'message' of undefined at leafletInitialized.Promise.all.then.catch.a (leaflet.js:4)

– Vidhyasagaran Muralidharan
2 hours ago














also, where are you trying to use your component? LEX, communities?

– glls
2 hours ago





also, where are you trying to use your component? LEX, communities?

– glls
2 hours ago













lightning home page

– Vidhyasagaran Muralidharan
2 hours ago





lightning home page

– Vidhyasagaran Muralidharan
2 hours ago










2 Answers
2






active

oldest

votes


















1














L.map(<String> id, <Map options> options?) is the initialization factory, in which you provide the ID of your element for the component to initialize, LWC doesn't seem to support passing in the id for leaflet to init since (from the doc):




Don’t use ID selectors with querySelector. The IDs that you define in HTML templates may be transformed into globally unique values when the template is rendered. If you use an ID selector in JavaScript, it won’t match the transformed ID.




leaflet also supports passign in the ELEMENT, so, if you pass the element rather than the string id, you should be fine (for the most part):



L.map(<HTMLElement> el, <Map options> options?)


if you change your code to



const mapRoot = this.template.querySelector(".map-root")
var map = L.map(mapRoot).setView([39.7392, -104.991531], 14);


you will be able to pass the instantiated HTML element to the factory.
You will need to add a class name to your div in order to use it as a query selector, since id's are not supported. Ex:



<template>
<div class="map-root" lwc:dom="manual"></div>
</template>


and one last thing, dont forget your css file, if you dont add a component height, the component will load but will appear with a height of 0px:



.map-root
height: 180px;



enter image description here
Leaflet Documentation



LWC Documentation - Access Elements the Component Owns






share|improve this answer
































    0














    The other answer about using the css is great . I will add few more things that could be cause for this.



    Check that the zip file you have for leaflet in the static resource is properly zipped and you are using the proper path .



    I downloaded from the site and uploaded to static resource and named the static resource as leaflet .



    I had to change the path as below



    renderedCallback() 
    if (this.leafletInitialized)
    return;

    this.leafletInitialized = true;

    Promise.all([
    loadScript(this, leaflet + '/leaflet.js'),
    loadStyle(this, leaflet + '/leaflet.css')
    ])
    .then(() =>
    this.initializeleaflet();
    )
    .catch(error =>
    console.log(error);
    this.dispatchEvent(
    new ShowToastEvent(
    title: 'Error loadingLeaflet',
    message: error,
    variant: 'error'
    )
    );
    );



    Also to see the exceptions of promise reject just log the error that will tell you true error .



    Also just a thought what makes you use leaflet . There is a lightning-map lwc component provided by salesforce and why not just use it .






    share|improve this answer






















      Your Answer








      StackExchange.ready(function()
      var channelOptions =
      tags: "".split(" "),
      id: "459"
      ;
      initTagRenderer("".split(" "), "".split(" "), channelOptions);

      StackExchange.using("externalEditor", function()
      // Have to fire editor after snippets, if snippets enabled
      if (StackExchange.settings.snippets.snippetsEnabled)
      StackExchange.using("snippets", function()
      createEditor();
      );

      else
      createEditor();

      );

      function createEditor()
      StackExchange.prepareEditor(
      heartbeatType: 'answer',
      autoActivateHeartbeat: false,
      convertImagesToLinks: false,
      noModals: true,
      showLowRepImageUploadWarning: true,
      reputationToPostImages: null,
      bindNavPrevention: true,
      postfix: "",
      imageUploader:
      brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
      contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
      allowUrls: true
      ,
      onDemand: true,
      discardSelector: ".discard-answer"
      ,immediatelyShowMarkdownHelp:true
      );



      );













      draft saved

      draft discarded


















      StackExchange.ready(
      function ()
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsalesforce.stackexchange.com%2fquestions%2f254214%2floading-the-leaflet-map-in-lightning-web-component%23new-answer', 'question_page');

      );

      Post as a guest















      Required, but never shown

























      2 Answers
      2






      active

      oldest

      votes








      2 Answers
      2






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes









      1














      L.map(<String> id, <Map options> options?) is the initialization factory, in which you provide the ID of your element for the component to initialize, LWC doesn't seem to support passing in the id for leaflet to init since (from the doc):




      Don’t use ID selectors with querySelector. The IDs that you define in HTML templates may be transformed into globally unique values when the template is rendered. If you use an ID selector in JavaScript, it won’t match the transformed ID.




      leaflet also supports passign in the ELEMENT, so, if you pass the element rather than the string id, you should be fine (for the most part):



      L.map(<HTMLElement> el, <Map options> options?)


      if you change your code to



      const mapRoot = this.template.querySelector(".map-root")
      var map = L.map(mapRoot).setView([39.7392, -104.991531], 14);


      you will be able to pass the instantiated HTML element to the factory.
      You will need to add a class name to your div in order to use it as a query selector, since id's are not supported. Ex:



      <template>
      <div class="map-root" lwc:dom="manual"></div>
      </template>


      and one last thing, dont forget your css file, if you dont add a component height, the component will load but will appear with a height of 0px:



      .map-root
      height: 180px;



      enter image description here
      Leaflet Documentation



      LWC Documentation - Access Elements the Component Owns






      share|improve this answer





























        1














        L.map(<String> id, <Map options> options?) is the initialization factory, in which you provide the ID of your element for the component to initialize, LWC doesn't seem to support passing in the id for leaflet to init since (from the doc):




        Don’t use ID selectors with querySelector. The IDs that you define in HTML templates may be transformed into globally unique values when the template is rendered. If you use an ID selector in JavaScript, it won’t match the transformed ID.




        leaflet also supports passign in the ELEMENT, so, if you pass the element rather than the string id, you should be fine (for the most part):



        L.map(<HTMLElement> el, <Map options> options?)


        if you change your code to



        const mapRoot = this.template.querySelector(".map-root")
        var map = L.map(mapRoot).setView([39.7392, -104.991531], 14);


        you will be able to pass the instantiated HTML element to the factory.
        You will need to add a class name to your div in order to use it as a query selector, since id's are not supported. Ex:



        <template>
        <div class="map-root" lwc:dom="manual"></div>
        </template>


        and one last thing, dont forget your css file, if you dont add a component height, the component will load but will appear with a height of 0px:



        .map-root
        height: 180px;



        enter image description here
        Leaflet Documentation



        LWC Documentation - Access Elements the Component Owns






        share|improve this answer



























          1












          1








          1







          L.map(<String> id, <Map options> options?) is the initialization factory, in which you provide the ID of your element for the component to initialize, LWC doesn't seem to support passing in the id for leaflet to init since (from the doc):




          Don’t use ID selectors with querySelector. The IDs that you define in HTML templates may be transformed into globally unique values when the template is rendered. If you use an ID selector in JavaScript, it won’t match the transformed ID.




          leaflet also supports passign in the ELEMENT, so, if you pass the element rather than the string id, you should be fine (for the most part):



          L.map(<HTMLElement> el, <Map options> options?)


          if you change your code to



          const mapRoot = this.template.querySelector(".map-root")
          var map = L.map(mapRoot).setView([39.7392, -104.991531], 14);


          you will be able to pass the instantiated HTML element to the factory.
          You will need to add a class name to your div in order to use it as a query selector, since id's are not supported. Ex:



          <template>
          <div class="map-root" lwc:dom="manual"></div>
          </template>


          and one last thing, dont forget your css file, if you dont add a component height, the component will load but will appear with a height of 0px:



          .map-root
          height: 180px;



          enter image description here
          Leaflet Documentation



          LWC Documentation - Access Elements the Component Owns






          share|improve this answer















          L.map(<String> id, <Map options> options?) is the initialization factory, in which you provide the ID of your element for the component to initialize, LWC doesn't seem to support passing in the id for leaflet to init since (from the doc):




          Don’t use ID selectors with querySelector. The IDs that you define in HTML templates may be transformed into globally unique values when the template is rendered. If you use an ID selector in JavaScript, it won’t match the transformed ID.




          leaflet also supports passign in the ELEMENT, so, if you pass the element rather than the string id, you should be fine (for the most part):



          L.map(<HTMLElement> el, <Map options> options?)


          if you change your code to



          const mapRoot = this.template.querySelector(".map-root")
          var map = L.map(mapRoot).setView([39.7392, -104.991531], 14);


          you will be able to pass the instantiated HTML element to the factory.
          You will need to add a class name to your div in order to use it as a query selector, since id's are not supported. Ex:



          <template>
          <div class="map-root" lwc:dom="manual"></div>
          </template>


          and one last thing, dont forget your css file, if you dont add a component height, the component will load but will appear with a height of 0px:



          .map-root
          height: 180px;



          enter image description here
          Leaflet Documentation



          LWC Documentation - Access Elements the Component Owns







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited 34 mins ago

























          answered 1 hour ago









          gllsglls

          11.1k72150




          11.1k72150























              0














              The other answer about using the css is great . I will add few more things that could be cause for this.



              Check that the zip file you have for leaflet in the static resource is properly zipped and you are using the proper path .



              I downloaded from the site and uploaded to static resource and named the static resource as leaflet .



              I had to change the path as below



              renderedCallback() 
              if (this.leafletInitialized)
              return;

              this.leafletInitialized = true;

              Promise.all([
              loadScript(this, leaflet + '/leaflet.js'),
              loadStyle(this, leaflet + '/leaflet.css')
              ])
              .then(() =>
              this.initializeleaflet();
              )
              .catch(error =>
              console.log(error);
              this.dispatchEvent(
              new ShowToastEvent(
              title: 'Error loadingLeaflet',
              message: error,
              variant: 'error'
              )
              );
              );



              Also to see the exceptions of promise reject just log the error that will tell you true error .



              Also just a thought what makes you use leaflet . There is a lightning-map lwc component provided by salesforce and why not just use it .






              share|improve this answer



























                0














                The other answer about using the css is great . I will add few more things that could be cause for this.



                Check that the zip file you have for leaflet in the static resource is properly zipped and you are using the proper path .



                I downloaded from the site and uploaded to static resource and named the static resource as leaflet .



                I had to change the path as below



                renderedCallback() 
                if (this.leafletInitialized)
                return;

                this.leafletInitialized = true;

                Promise.all([
                loadScript(this, leaflet + '/leaflet.js'),
                loadStyle(this, leaflet + '/leaflet.css')
                ])
                .then(() =>
                this.initializeleaflet();
                )
                .catch(error =>
                console.log(error);
                this.dispatchEvent(
                new ShowToastEvent(
                title: 'Error loadingLeaflet',
                message: error,
                variant: 'error'
                )
                );
                );



                Also to see the exceptions of promise reject just log the error that will tell you true error .



                Also just a thought what makes you use leaflet . There is a lightning-map lwc component provided by salesforce and why not just use it .






                share|improve this answer

























                  0












                  0








                  0







                  The other answer about using the css is great . I will add few more things that could be cause for this.



                  Check that the zip file you have for leaflet in the static resource is properly zipped and you are using the proper path .



                  I downloaded from the site and uploaded to static resource and named the static resource as leaflet .



                  I had to change the path as below



                  renderedCallback() 
                  if (this.leafletInitialized)
                  return;

                  this.leafletInitialized = true;

                  Promise.all([
                  loadScript(this, leaflet + '/leaflet.js'),
                  loadStyle(this, leaflet + '/leaflet.css')
                  ])
                  .then(() =>
                  this.initializeleaflet();
                  )
                  .catch(error =>
                  console.log(error);
                  this.dispatchEvent(
                  new ShowToastEvent(
                  title: 'Error loadingLeaflet',
                  message: error,
                  variant: 'error'
                  )
                  );
                  );



                  Also to see the exceptions of promise reject just log the error that will tell you true error .



                  Also just a thought what makes you use leaflet . There is a lightning-map lwc component provided by salesforce and why not just use it .






                  share|improve this answer













                  The other answer about using the css is great . I will add few more things that could be cause for this.



                  Check that the zip file you have for leaflet in the static resource is properly zipped and you are using the proper path .



                  I downloaded from the site and uploaded to static resource and named the static resource as leaflet .



                  I had to change the path as below



                  renderedCallback() 
                  if (this.leafletInitialized)
                  return;

                  this.leafletInitialized = true;

                  Promise.all([
                  loadScript(this, leaflet + '/leaflet.js'),
                  loadStyle(this, leaflet + '/leaflet.css')
                  ])
                  .then(() =>
                  this.initializeleaflet();
                  )
                  .catch(error =>
                  console.log(error);
                  this.dispatchEvent(
                  new ShowToastEvent(
                  title: 'Error loadingLeaflet',
                  message: error,
                  variant: 'error'
                  )
                  );
                  );



                  Also to see the exceptions of promise reject just log the error that will tell you true error .



                  Also just a thought what makes you use leaflet . There is a lightning-map lwc component provided by salesforce and why not just use it .







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered 17 mins ago









                  Mohith ShrivastavaMohith Shrivastava

                  61.3k7102145




                  61.3k7102145



























                      draft saved

                      draft discarded
















































                      Thanks for contributing an answer to Salesforce Stack Exchange!


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid


                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.

                      To learn more, see our tips on writing great answers.




                      draft saved


                      draft discarded














                      StackExchange.ready(
                      function ()
                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsalesforce.stackexchange.com%2fquestions%2f254214%2floading-the-leaflet-map-in-lightning-web-component%23new-answer', 'question_page');

                      );

                      Post as a guest















                      Required, but never shown





















































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown

































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown







                      Popular posts from this blog

                      Nidaros erkebispedøme

                      Birsay

                      Was Woodrow Wilson really a Liberal?Was World War I a war of liberals against authoritarians?Founding Fathers...