I am trying to use Leaflet (https://leafletjs.com/) javascript library in a project built on ASP .NET MVC5.
For the sake of simplicity, let's just say I am trying to run the following code (provided by this tutorial: https://leafletjs.com/examples/crs-simple/crs-simple.html) on a view (Index.cshtml), which uses a predefined layout (_Layout.cshtml):
Index.cshtml
<style>
#map {
height: 600px;
}
</style>
<div id="map"></div>
<script>
var map = L.map('map', {
crs: L.CRS.Simple,
minZoom: -5
});
var bounds = [[0,0], [1000, 1000]];
var image = L.imageOverlay('aMap.PNG', bounds).addTo(map);
map.fitBounds(bounds);
</script>
In the layout view, I placed the following code in the head of the HTML code, as instructed by these guidelines: https://leafletjs.com/download.html
<link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/leaflet.css" />
<script src="https://unpkg.com/[email protected]/dist/leaflet.js"></script>
But this doesn't work and I can see that the library is not recognized even by Intellisense.
I have also tried downloading the package and as indicated, I added the files to the project, but having in mind the MVC project structure, I added the leaflet.css file to the Content folder and the rest of the js files to the Scripts folder. And in the layout view, I added:
<link rel="stylesheet" href="~/Content/leaflet.css" />
<script src="~/Scripts/leaflet.js"></script>
Now, Intellisense recognizes the library but still, when running the project the map is not shown in the view.
Am I missing something obvious here, maybe an import? Please bear with me if the answer is simple, but I am a beginner at using .NET framework and the ASP .NET MVC structure and I am still trying to figure out my way across this framework.
UPDATE
Realized I was loading from the Index view so leaflet.js was not being loaded first.
I can now see the leaflet map section but the PNG image is not being loaded. I believe leaflet is not being able to find so where should I place the image in the project structure? I tried placing it in the Content and Scripts folder but no luck.
Lbefore trying to run the "map" function against it. Is this a constant which should be defined by leaflet.js? Possibly the JS file has not loaded before you try to run this code. Check your browser's network tools when you load the page to see whether leaflet.js loaded successfully (you'll see a 200 OK response for that file if it did). And ensure you added the<scripttag for leaflet.js inside the<head>section of your page (usually in the Layout bit in MVC) so it loads before any other JS runs