AngularJS directive for the Leaflet Javascript Library. This software aims to easily embed maps managed by leaflet on your Leaflet project.
See some basic examples:
- Basic example
- Center example
- Center autodiscover example
- Center with url hash example
- Custom parameters example
- Draw controls example
- Bounds example
- MaxBounds example
- Tiles example
- Tile zoom changer example
- Layers simple example
- Overlays simple example
- ImageOverlay simple example
- Dynamic add/remove layers/overlays example
- Google Maps example
- ESRI Dynamic Layer example
- ESRI Legend example
- Yandex Maps example
- Paths Simple example
- Paths Types example
- Paths example
- Single marker example
- Marker with label example
- Marker with group clustering example
- Marker with group clustering example (10000 markers)
- Marker with group clustering example without overlays
- Marker groups example
- Marker update properties example
- Markers dynamic add/remove example
- Marker addition example
- Legend example
- GeoJson example
- HeatMap example
- Decoration example
- UTFGrid example
- Layers extended example
- Events example
- Overlays extended example
- Accessing the leaflet map object
- Accessing the leaflet map object of two maps
- Two maps sharing attributes
- Center map with GeoIP
To see it in action, go to the main page where you can find more examples and some documentation:
You must include the leaflet-directive dependency on your angular module:
var app = angular.module("demoapp", ["leaflet-directive"]);
After that, you can change the default values of the directive (if you want) on your angular controller. For example, you can change the tiles source, the maxzoom on the leaflet map or the polyline path properties.
angular.extend($scope, {
defaults: {
tileLayer: "http://{s}.tile.opencyclemap.org/cycle/{z}/{x}/{y}.png",
maxZoom: 14,
path: {
weight: 10,
color: '#800000',
opacity: 1
}
}
});
If you want to set the start of the map to a precise position, you can define the "center" property of the scope (lat, lng, zoom). It will be updated interacting on the scope and on the leaflet map in two-way binding. Example:
angular.extend($scope, {
center: {
lat: 51.505,
lng: -0.09,
zoom: 8
}
});
If you need to run any method on the map object, use leafletData
as following (notice the map object is returned in a form of a promise):
angular.module('myModule').controller('MapController', ['$scope', 'leafletData',
function($scope, leafletData) {
leafletData.getMap().then(function(map) {
L.GeoIP.centerMapOnPosition(map, 15);
});
}
]);
Finally, you must include the markup directive on your HTML page, like this:
<leaflet defaults="defaults" center="center" height="480px" width="640px"></leaflet>
If you want to have more than one map on the page and access their respective map objects, add an id attribute to your leaflet directive in HTML, like this:
<leaflet id="mymap" defaults="defaults" center="center" height="480px" width="640px"></leaflet>
And then you can use this id in getMap()
like this:
angular.module('myModule').controller('MapController', ['$scope', 'leafletData',
function($scope, leafletData) {
leafletData.getMap('mymap').then(function(map) {
L.GeoIP.centerMapOnPosition(map, 15);
});
}
]);