Last active
June 21, 2016 19:15
-
-
Save UNFPAmaldives/2fb5fde367cd583b5487544aa529407d to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
body { | |
margin: 0; | |
padding: 0; | |
} | |
#map { | |
position: absolute; | |
top: 0; | |
bottom: 0; | |
width: 100%; | |
resize: both; | |
overflow: auto; | |
} | |
white-space: nowrap; | |
} | |
@font-face { | |
font-family: 'unfpabold'; | |
src: url("http://unfpamaldives.github.io/migration/css/unfpa-bold-webfont.eot"); | |
} | |
@font-face { | |
font-family: 'unfpasemibold'; | |
" src: url("http://unfpamaldives.github.io/migration/css/unfpa-semibold-webfont.eot"); | |
} | |
@font-face { | |
font-family: 'unfpatext'; | |
src: url("http://unfpamaldives.github.io/migration/css/unfpa-text-webfont.eot"); | |
} | |
@font-face { | |
font-family: 'unfpasemibolditalic'; | |
src: url("http://unfpamaldives.github.io/migration/css/unfpa-semibolditalic-webfont.eot"); | |
} | |
@font-face { | |
font-family: 'unfpatextitalic'; | |
src: url("http://unfpamaldives.github.io/migration/css/unfpa-textitalic-webfont.eot"); | |
} | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* @author Jawish Hameed <jawish@gmail.com> | |
* @version 0.1 | |
* @date 20-12-2015 | |
* | |
* | |
* Expects the following config: | |
* var config { | |
* linkFile = 'data.csv', | |
* weightMin = 0, | |
* weightMax = 80, | |
* lineColorMode = 'fixed', // fixed, random, weight, atoll or a colorname | |
* lineColorIn = 'red', | |
* lineColorOut = 'green', | |
* baseMapProvider = 'esri', // esri, osm | |
* startLatLng = [3.175, 73.509], | |
* startZoom = 7 | |
* } | |
* | |
*/ | |
var atollLayers = {}; | |
var linkLayers = {}; | |
var atollSelected = null; | |
// Create map and center around Maldives | |
var esriMap = L.tileLayer('http://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}', { | |
attribution: 'Tiles © Esri — Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community' | |
}); | |
var osmMap = L.tileLayer('https://services.arcgisonline.com/ArcGIS/rest/services/Ocean/World_Ocean_Base/MapServer/tile/{z}/{y}/{x}', { | |
attribution: 'Tiles © Esri — Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community' | |
}); | |
var watercolor = L.tileLayer('http://c.tile.stamen.com/watercolor/{z}/{x}/{y}.jpg', { | |
attribution: '© <a href="http://osm.org/copyright">OpenStreetMap</a> contributors' | |
}); | |
var map = L.map('map', { | |
center: config.startLatLng, | |
zoom: config.startZoom, | |
layers: [ | |
(config.baseMapProvider == 'esri') ? esriMap : osmMap | |
] | |
}); | |
// Load the atolls GeoJSON file | |
d3.json('atolls.geojson', function(error, atolls) { | |
if (error) throw error; | |
var atollLayer = L.geoJson(atolls, { | |
onEachFeature: function (feature, layer) { | |
var atollStyle = { | |
'opacity': 0.1, | |
'color': null | |
}; | |
var immigrants = 0, | |
emigrants = 0; | |
layer | |
.setStyle(atollStyle) | |
.bindLabel(feature.properties.name, { noHide: true }) | |
.on('mouseover', function () { | |
this.setStyle({ | |
'opacity': 0.9, | |
'color': 'white' | |
}); | |
}) | |
.on('mouseout', function () { | |
this.setStyle(atollStyle); | |
}) | |
.on('dblclick', function () { | |
layer.bindPopup('<p3>' + feature.properties.name + '</p3><br><p4>Immigration: ' + immigrants + '</p4><br><p4>Emigration: ' + emigrants + '</p4>').openPopup(); | |
}) | |
.on('click', function (e) { | |
layer.closePopup(); | |
for (var linkPath in linkLayers) { | |
var path = linkPath.split('-'); | |
if (atollSelected != null && atollSelected != path[0]) { | |
map.addLayer(linkLayers[linkPath].feature); | |
} | |
} | |
if (atollSelected == null || atollSelected != feature.id) { | |
for (var linkPath in linkLayers) { | |
var path = linkPath.split('-'); | |
if (feature.id != path[0] && feature.id != path[1]) { | |
map.removeLayer(linkLayers[linkPath].feature); | |
} | |
else { | |
if (feature.id == path[0]) emigrants += parseInt(linkLayers[linkPath].data.value); | |
if (feature.id == path[1]) immigrants += parseInt(linkLayers[linkPath].data.value); | |
} | |
} | |
atollSelected = feature.id; | |
} | |
else { | |
atollSelected = null; | |
} | |
}); | |
atollLayers[feature.id] = { | |
layer: layer, | |
center: layer.getBounds().getCenter() | |
}; | |
}, | |
style: function (feature) { | |
return { | |
stroke: 'black', | |
weight: 1, | |
opacity: 0.1 | |
} | |
} | |
}).addTo(map); | |
// Check available viz | |
for (var dataName in config.datasets) { | |
// Draw buttons | |
map.addControl(new datasetButton(dataName)); | |
if (config.datasets[dataName].hasOwnProperty('active') && config.datasets[dataName].active == true) { | |
renderDataset(dataName); | |
} | |
} | |
L.control.layers({}, { 'Terrain': osmMap, 'Satellite': esriMap, 'Watercolor': watercolor }).addTo(map); | |
}); | |
function renderDataset(dataName) { | |
for (var linkPath in linkLayers) { | |
map.removeLayer(linkLayers[linkPath].feature); | |
} | |
linkLayers = {}; | |
var vizConfig = config.datasets[dataName]; | |
d3.csv(vizConfig.linkFile, function(error, links) { | |
if (error) throw error; | |
var valueMin = d3.min(links, function(l) { return (l.source != l.target) ? parseInt(l.value) : null; }); | |
var valueMax = d3.max(links, function(l) { return (l.source != l.target) ? parseInt(l.value) : null; }); | |
var valueScale = d3.scale.linear() | |
.domain([valueMin, valueMax]) | |
.range([vizConfig.weightMin, vizConfig.weightMax]); | |
var atollColors = []; | |
var colorCategories = d3.scale.category20(); | |
for (var atoll in atollLayers) { | |
atollColors[atoll] = colorCategories(Object.keys(atollColors).length); | |
} | |
var weightColors = d3.scale.ordinal() | |
.domain([vizConfig.weightMin, (vizConfig.weightMax - vizConfig.weightMin) / 2, vizConfig.weightMax]) | |
.range(['red', 'blue', 'green']); | |
links.forEach(function (link) { | |
if (link.source != link.target) { | |
var path = [ link.source, link.target ].join('-'); | |
var pathReverse = [ link.target, link.source ].join('-'); | |
var lineWeight = valueScale(link.value); | |
if (vizConfig.hasOwnProperty('skipValueThreshold') && vizConfig.skipValueThreshold > link.value) { | |
return; | |
} | |
if (vizConfig.hasOwnProperty('skipWeightThreshold') && vizConfig.skipValueThreshold > lineWeight) { | |
return; | |
} | |
var lineColor = null; | |
switch (vizConfig.lineColorMode) { | |
case 'fixed': | |
lineColor = (linkLayers.hasOwnProperty(pathReverse)) ? vizConfig.lineColorIn : vizConfig.lineColorOut; | |
break; | |
case 'atoll': | |
lineColor = atollColors[link.source]; | |
break; | |
case 'weight': | |
lineColor = weightColors(lineWeight); | |
break; | |
case 'random': | |
lineColor = '#' + Math.floor(Math.random()*16777215).toString(16); | |
break; | |
default: | |
lineColor = vizConfig.lineColorMode; | |
} | |
var lineCenterLatLng = L.polyline([ atollLayers[link.source].center, atollLayers[link.target].center ]) | |
.getBounds() | |
.getCenter(); | |
var lineBreakLatLng = null; | |
if (linkLayers[pathReverse]) { | |
lineBreakLatLng = L.latLng( | |
(lineCenterLatLng.lat * .001) + lineCenterLatLng.lat, | |
(lineCenterLatLng.lng * .001) + lineCenterLatLng.lng | |
); | |
} | |
else { | |
lineBreakLatLng = L.latLng( | |
lineCenterLatLng.lat - (lineCenterLatLng.lat * .001), | |
lineCenterLatLng.lng - (lineCenterLatLng.lng * .001) | |
); | |
} | |
var line = L.polyline( | |
[ | |
atollLayers[link.source].center, | |
lineBreakLatLng, | |
atollLayers[link.target].center | |
], | |
{ | |
color: lineColor, | |
weight: lineWeight, | |
smoothFactor: 1, | |
opacity: 0.5, | |
fill: false, | |
class: path | |
}); | |
var arrow = L.polylineDecorator(line, { patterns: [{ | |
offset: '55%', | |
symbol: L.Symbol.arrowHead({ | |
polygon: true, | |
pathOptions: { | |
weight: lineWeight, | |
color: lineColor | |
} | |
}) | |
}]}); | |
var feature = L.featureGroup([line, arrow]) | |
.bindPopup('<p3>' + link.source + '</p3> to <p3>' + link.target + '</p3>' + '<br>' + '<p4>' + link.value + ' migrants' + '</p4>') | |
.on('mouseover', function(e) { | |
if (config.linePopup == 'hover') { | |
this.openPopup(); | |
} | |
this.setStyle({ | |
opacity: 1 | |
}); | |
}) | |
.on('mouseout', function(e) { | |
this.setStyle({ | |
opacity: 0.5 | |
}); | |
}) | |
.addTo(map); | |
linkLayers[path] = { | |
feature: feature, | |
line: line, | |
arrow: arrow, | |
data: link | |
} | |
} | |
}); | |
}); | |
} | |
/** | |
* Custom control to add a button | |
*/ | |
var datasetButton = L.Control.extend({ | |
dataName: null, | |
options: { position: 'topright' }, | |
initialize: function(dataName) { | |
this.dataName = dataName; | |
}, | |
onAdd: function (map) { | |
var self = this; | |
var container = L.DomUtil.create('div', 'leaflet-bar '); | |
container.innerText = this.dataName; | |
container.style.background = '#fff'; | |
container.style.padding = '7px 15px'; | |
container.style.cursor = 'pointer'; | |
container.onclick = function(){ | |
renderDataset(self.dataName); | |
} | |
return container; | |
} | |
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html> | |
<head> | |
<meta http-equiv="X-UA-Compatible" content="IE=Edge"> | |
<link href="https://cdnjs.cloudflare.com/ajax/libs/leaflet/0.7.7/leaflet.css" rel="stylesheet" type="text/css"/> | |
<link href="leaflet.label.css" rel="stylesheet" type="text/css"/> | |
<link href="app.css" rel="stylesheet" type="text/css"/> | |
<script> | |
/* Begin Config */ | |
var config = { | |
baseMapProvider: 'esri', // Valid values: esri, osm | |
startLatLng: [3.175, 73.509], | |
startZoom: 9, | |
linePopup: 'hover', // Valid values: hover, click | |
datasets: { | |
"Male' and atolls": { | |
linkFile: 'population_sankey_maleandatolls.csv', // data file name (may include path) | |
weightMin: 1, | |
weightMax: 30, | |
lineColorMode: 'fixed', // Valid values: fixed, random, weight, atoll or any color name | |
lineColorIn: 'orange', // Valid values: any color name | |
lineColorOut: 'violet', // Valid values: any color name | |
skipValueThreshold: 1, | |
skipWeightThreshold: 0, | |
active: true | |
}, | |
"To Male'": { | |
linkFile: 'population_sankey_maleonly.csv', // data file name (may include path) | |
weightMin: 1, | |
weightMax: 40, | |
lineColorMode: 'atoll', // Valid values: fixed, random, weight, atoll or any color name | |
lineColorIn: 'orange', // Valid values: any color name | |
lineColorOut: 'violet', // Valid values: any color name | |
skipValueThreshold: 1, | |
skipWeightThreshold: 0, | |
active: false | |
}, | |
"Among atolls": { | |
linkFile: 'population_sankey_wo_male.csv', // data file name (may include path) | |
weightMin: 1, | |
weightMax: 40, | |
lineColorMode: 'fixed', // Valid values: fixed, random, weight, atoll or any color name | |
lineColorIn: 'orange', // Valid values: any color name | |
lineColorOut: 'violet', // Valid values: any color name | |
skipValueThreshold: 1, | |
skipWeightThreshold: 0, | |
active: false | |
} | |
} | |
}; | |
/* End Config */ | |
</script> | |
</head> | |
<body> | |
<div id="map"></div> | |
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet/0.7.7/leaflet.js"></script> | |
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.9/d3.min.js"></script> | |
<script src="leaflet-providers.js"></script> | |
<script src="leaflet.polylinedecorator.min.js"></script> | |
<script src="leaflet.label.js"></script> | |
<script src="app.js"></script> | |
</body> | |
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(function (root, factory) { | |
if (typeof define === 'function' && define.amd) { | |
// AMD. Register as an anonymous module. | |
define(['leaflet'], factory); | |
} else if (typeof modules === 'object' && module.exports) { | |
// define a Common JS module that relies on 'leaflet' | |
module.exports = factory(require('leaflet')); | |
} else { | |
// Assume Leaflet is loaded into global object L already | |
factory(L); | |
} | |
}(this, function (L) { | |
'use strict'; | |
L.TileLayer.Provider = L.TileLayer.extend({ | |
initialize: function (arg, options) { | |
var providers = L.TileLayer.Provider.providers; | |
var parts = arg.split('.'); | |
var providerName = parts[0]; | |
var variantName = parts[1]; | |
if (!providers[providerName]) { | |
throw 'No such provider (' + providerName + ')'; | |
} | |
var provider = { | |
url: providers[providerName].url, | |
options: providers[providerName].options | |
}; | |
// overwrite values in provider from variant. | |
if (variantName && 'variants' in providers[providerName]) { | |
if (!(variantName in providers[providerName].variants)) { | |
throw 'No such variant of ' + providerName + ' (' + variantName + ')'; | |
} | |
var variant = providers[providerName].variants[variantName]; | |
var variantOptions; | |
if (typeof variant === 'string') { | |
variantOptions = { | |
variant: variant | |
}; | |
} else { | |
variantOptions = variant.options; | |
} | |
provider = { | |
url: variant.url || provider.url, | |
options: L.Util.extend({}, provider.options, variantOptions) | |
}; | |
} else if (typeof provider.url === 'function') { | |
provider.url = provider.url(parts.splice(1, parts.length - 1).join('.')); | |
} | |
var forceHTTP = window.location.protocol === 'file:' || provider.options.forceHTTP; | |
if (provider.url.indexOf('//') === 0 && forceHTTP) { | |
provider.url = 'http:' + provider.url; | |
} | |
// If retina option is set | |
if (provider.options.retina) { | |
// Check retina screen | |
if (options.detectRetina && L.Browser.retina) { | |
// The retina option will be active now | |
// But we need to prevent Leaflet retina mode | |
options.detectRetina = false; | |
} else { | |
// No retina, remove option | |
provider.options.retina = ''; | |
} | |
} | |
// replace attribution placeholders with their values from toplevel provider attribution, | |
// recursively | |
var attributionReplacer = function (attr) { | |
if (attr.indexOf('{attribution.') === -1) { | |
return attr; | |
} | |
return attr.replace(/\{attribution.(\w*)\}/, | |
function (match, attributionName) { | |
return attributionReplacer(providers[attributionName].options.attribution); | |
} | |
); | |
}; | |
provider.options.attribution = attributionReplacer(provider.options.attribution); | |
// Compute final options combining provider options with any user overrides | |
var layerOpts = L.Util.extend({}, provider.options, options); | |
L.TileLayer.prototype.initialize.call(this, provider.url, layerOpts); | |
} | |
}); | |
/** | |
* Definition of providers. | |
* see http://leafletjs.com/reference.html#tilelayer for options in the options map. | |
*/ | |
L.TileLayer.Provider.providers = { | |
OpenStreetMap: { | |
url: '//{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', | |
options: { | |
maxZoom: 19, | |
attribution: | |
'© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>' | |
}, | |
variants: { | |
Mapnik: {}, | |
BlackAndWhite: { | |
url: 'http://{s}.tiles.wmflabs.org/bw-mapnik/{z}/{x}/{y}.png', | |
options: { | |
maxZoom: 18 | |
} | |
}, | |
DE: { | |
url: 'http://{s}.tile.openstreetmap.de/tiles/osmde/{z}/{x}/{y}.png', | |
options: { | |
maxZoom: 18 | |
} | |
}, | |
France: { | |
url: 'http://{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png', | |
options: { | |
attribution: '© Openstreetmap France | {attribution.OpenStreetMap}' | |
} | |
}, | |
HOT: { | |
url: 'http://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png', | |
options: { | |
attribution: '{attribution.OpenStreetMap}, Tiles courtesy of <a href="http://hot.openstreetmap.org/" target="_blank">Humanitarian OpenStreetMap Team</a>' | |
} | |
} | |
} | |
}, | |
OpenSeaMap: { | |
url: 'http://tiles.openseamap.org/seamark/{z}/{x}/{y}.png', | |
options: { | |
attribution: 'Map data: © <a href="http://www.openseamap.org">OpenSeaMap</a> contributors' | |
} | |
}, | |
OpenTopoMap: { | |
url: '//{s}.tile.opentopomap.org/{z}/{x}/{y}.png', | |
options: { | |
maxZoom: 16, | |
attribution: 'Map data: {attribution.OpenStreetMap}, <a href="http://viewfinderpanoramas.org">SRTM</a> | Map style: © <a href="https://opentopomap.org">OpenTopoMap</a> (<a href="https://creativecommons.org/licenses/by-sa/3.0/">CC-BY-SA</a>)' | |
} | |
}, | |
Thunderforest: { | |
url: '//{s}.tile.thunderforest.com/{variant}/{z}/{x}/{y}.png', | |
options: { | |
attribution: | |
'© <a href="http://www.thunderforest.com/">Thunderforest</a>, {attribution.OpenStreetMap}', | |
variant: 'cycle' | |
}, | |
variants: { | |
OpenCycleMap: 'cycle', | |
Transport: { | |
options: { | |
variant: 'transport', | |
maxZoom: 19 | |
} | |
}, | |
TransportDark: { | |
options: { | |
variant: 'transport-dark', | |
maxZoom: 19 | |
} | |
}, | |
SpinalMap: { | |
options: { | |
variant: 'spinal-map', | |
maxZoom: 11 | |
} | |
}, | |
Landscape: 'landscape', | |
Outdoors: 'outdoors', | |
Pioneer: 'pioneer' | |
} | |
}, | |
OpenMapSurfer: { | |
url: 'http://korona.geog.uni-heidelberg.de/tiles/{variant}/x={x}&y={y}&z={z}', | |
options: { | |
maxZoom: 20, | |
variant: 'roads', | |
attribution: 'Imagery from <a href="http://giscience.uni-hd.de/">GIScience Research Group @ University of Heidelberg</a> — Map data {attribution.OpenStreetMap}' | |
}, | |
variants: { | |
Roads: 'roads', | |
AdminBounds: { | |
options: { | |
variant: 'adminb', | |
maxZoom: 19 | |
} | |
}, | |
Grayscale: { | |
options: { | |
variant: 'roadsg', | |
maxZoom: 19 | |
} | |
} | |
} | |
}, | |
Hydda: { | |
url: 'http://{s}.tile.openstreetmap.se/hydda/{variant}/{z}/{x}/{y}.png', | |
options: { | |
variant: 'full', | |
attribution: 'Tiles courtesy of <a href="http://openstreetmap.se/" target="_blank">OpenStreetMap Sweden</a> — Map data {attribution.OpenStreetMap}' | |
}, | |
variants: { | |
Full: 'full', | |
Base: 'base', | |
RoadsAndLabels: 'roads_and_labels' | |
} | |
}, | |
MapQuestOpen: { | |
/* Mapquest does support https, but with a different subdomain: | |
* https://otile{s}-s.mqcdn.com/tiles/1.0.0/{type}/{z}/{x}/{y}.{ext} | |
* which makes implementing protocol relativity impossible. | |
*/ | |
url: 'http://otile{s}.mqcdn.com/tiles/1.0.0/{type}/{z}/{x}/{y}.{ext}', | |
options: { | |
type: 'map', | |
ext: 'jpg', | |
attribution: | |
'Tiles Courtesy of <a href="http://www.mapquest.com/">MapQuest</a> — ' + | |
'Map data {attribution.OpenStreetMap}', | |
subdomains: '1234' | |
}, | |
variants: { | |
OSM: {}, | |
Aerial: { | |
options: { | |
type: 'sat', | |
attribution: | |
'Tiles Courtesy of <a href="http://www.mapquest.com/">MapQuest</a> — ' + | |
'Portions Courtesy NASA/JPL-Caltech and U.S. Depart. of Agriculture, Farm Service Agency' | |
} | |
}, | |
HybridOverlay: { | |
options: { | |
type: 'hyb', | |
ext: 'png', | |
opacity: 0.9 | |
} | |
} | |
} | |
}, | |
MapBox: { | |
url: '//api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token={accessToken}', | |
options: { | |
attribution: | |
'Imagery from <a href="http://mapbox.com/about/maps/">MapBox</a> — ' + | |
'Map data {attribution.OpenStreetMap}', | |
subdomains: 'abcd' | |
} | |
}, | |
Stamen: { | |
url: '//stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}.{ext}', | |
options: { | |
attribution: | |
'Map tiles by <a href="http://stamen.com">Stamen Design</a>, ' + | |
'<a href="http://creativecommons.org/licenses/by/3.0">CC BY 3.0</a> — ' + | |
'Map data {attribution.OpenStreetMap}', | |
subdomains: 'abcd', | |
minZoom: 0, | |
maxZoom: 20, | |
variant: 'toner', | |
ext: 'png' | |
}, | |
variants: { | |
Toner: 'toner', | |
TonerBackground: 'toner-background', | |
TonerHybrid: 'toner-hybrid', | |
TonerLines: 'toner-lines', | |
TonerLabels: 'toner-labels', | |
TonerLite: 'toner-lite', | |
Watercolor: { | |
options: { | |
variant: 'watercolor', | |
minZoom: 1, | |
maxZoom: 16 | |
} | |
}, | |
Terrain: { | |
options: { | |
variant: 'terrain', | |
minZoom: 4, | |
maxZoom: 18, | |
bounds: [[22, -132], [70, -56]] | |
} | |
}, | |
TerrainBackground: { | |
options: { | |
variant: 'terrain-background', | |
minZoom: 4, | |
maxZoom: 18, | |
bounds: [[22, -132], [70, -56]] | |
} | |
}, | |
TopOSMRelief: { | |
options: { | |
variant: 'toposm-color-relief', | |
ext: 'jpg', | |
bounds: [[22, -132], [51, -56]] | |
} | |
}, | |
TopOSMFeatures: { | |
options: { | |
variant: 'toposm-features', | |
bounds: [[22, -132], [51, -56]], | |
opacity: 0.9 | |
} | |
} | |
} | |
}, | |
Esri: { | |
url: '//server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}', | |
options: { | |
variant: 'World_Street_Map', | |
attribution: 'Tiles © Esri' | |
}, | |
variants: { | |
WorldStreetMap: { | |
options: { | |
attribution: | |
'{attribution.Esri} — ' + | |
'Source: Esri, DeLorme, NAVTEQ, USGS, Intermap, iPC, NRCAN, Esri Japan, METI, Esri China (Hong Kong), Esri (Thailand), TomTom, 2012' | |
} | |
}, | |
DeLorme: { | |
options: { | |
variant: 'Specialty/DeLorme_World_Base_Map', | |
minZoom: 1, | |
maxZoom: 11, | |
attribution: '{attribution.Esri} — Copyright: ©2012 DeLorme' | |
} | |
}, | |
WorldTopoMap: { | |
options: { | |
variant: 'World_Topo_Map', | |
attribution: | |
'{attribution.Esri} — ' + | |
'Esri, DeLorme, NAVTEQ, TomTom, Intermap, iPC, USGS, FAO, NPS, NRCAN, GeoBase, Kadaster NL, Ordnance Survey, Esri Japan, METI, Esri China (Hong Kong), and the GIS User Community' | |
} | |
}, | |
WorldImagery: { | |
options: { | |
variant: 'World_Imagery', | |
attribution: | |
'{attribution.Esri} — ' + | |
'Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community' | |
} | |
}, | |
WorldTerrain: { | |
options: { | |
variant: 'World_Terrain_Base', | |
maxZoom: 13, | |
attribution: | |
'{attribution.Esri} — ' + | |
'Source: USGS, Esri, TANA, DeLorme, and NPS' | |
} | |
}, | |
WorldShadedRelief: { | |
options: { | |
variant: 'World_Shaded_Relief', | |
maxZoom: 13, | |
attribution: '{attribution.Esri} — Source: Esri' | |
} | |
}, | |
WorldPhysical: { | |
options: { | |
variant: 'World_Physical_Map', | |
maxZoom: 8, | |
attribution: '{attribution.Esri} — Source: US National Park Service' | |
} | |
}, | |
OceanBasemap: { | |
options: { | |
variant: 'Ocean_Basemap', | |
maxZoom: 13, | |
attribution: '{attribution.Esri} — Sources: GEBCO, NOAA, CHS, OSU, UNH, CSUMB, National Geographic, DeLorme, NAVTEQ, and Esri' | |
} | |
}, | |
NatGeoWorldMap: { | |
options: { | |
variant: 'NatGeo_World_Map', | |
maxZoom: 16, | |
attribution: '{attribution.Esri} — National Geographic, Esri, DeLorme, NAVTEQ, UNEP-WCMC, USGS, NASA, ESA, METI, NRCAN, GEBCO, NOAA, iPC' | |
} | |
}, | |
WorldGrayCanvas: { | |
options: { | |
variant: 'Canvas/World_Light_Gray_Base', | |
maxZoom: 16, | |
attribution: '{attribution.Esri} — Esri, DeLorme, NAVTEQ' | |
} | |
} | |
} | |
}, | |
OpenWeatherMap: { | |
url: 'http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png', | |
options: { | |
maxZoom: 19, | |
attribution: 'Map data © <a href="http://openweathermap.org">OpenWeatherMap</a>', | |
opacity: 0.5 | |
}, | |
variants: { | |
Clouds: 'clouds', | |
CloudsClassic: 'clouds_cls', | |
Precipitation: 'precipitation', | |
PrecipitationClassic: 'precipitation_cls', | |
Rain: 'rain', | |
RainClassic: 'rain_cls', | |
Pressure: 'pressure', | |
PressureContour: 'pressure_cntr', | |
Wind: 'wind', | |
Temperature: 'temp', | |
Snow: 'snow' | |
} | |
}, | |
HERE: { | |
/* | |
* HERE maps, formerly Nokia maps. | |
* These basemaps are free, but you need an API key. Please sign up at | |
* http://developer.here.com/getting-started | |
* | |
* Note that the base urls contain '.cit' whichs is HERE's | |
* 'Customer Integration Testing' environment. Please remove for production | |
* envirionments. | |
*/ | |
url: | |
'//{s}.{base}.maps.cit.api.here.com/maptile/2.1/' + | |
'{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?' + | |
'app_id={app_id}&app_code={app_code}&lg={language}', | |
options: { | |
attribution: | |
'Map © 1987-2014 <a href="http://developer.here.com">HERE</a>', | |
subdomains: '1234', | |
mapID: 'newest', | |
'app_id': '<insert your app_id here>', | |
'app_code': '<insert your app_code here>', | |
base: 'base', | |
variant: 'normal.day', | |
maxZoom: 20, | |
type: 'maptile', | |
language: 'eng', | |
format: 'png8', | |
size: '256' | |
}, | |
variants: { | |
normalDay: 'normal.day', | |
normalDayCustom: 'normal.day.custom', | |
normalDayGrey: 'normal.day.grey', | |
normalDayMobile: 'normal.day.mobile', | |
normalDayGreyMobile: 'normal.day.grey.mobile', | |
normalDayTransit: 'normal.day.transit', | |
normalDayTransitMobile: 'normal.day.transit.mobile', | |
normalNight: 'normal.night', | |
normalNightMobile: 'normal.night.mobile', | |
normalNightGrey: 'normal.night.grey', | |
normalNightGreyMobile: 'normal.night.grey.mobile', | |
basicMap: { | |
options: { | |
type: 'basetile' | |
} | |
}, | |
mapLabels: { | |
options: { | |
type: 'labeltile', | |
format: 'png' | |
} | |
}, | |
trafficFlow: { | |
options: { | |
base: 'traffic', | |
type: 'flowtile' | |
} | |
}, | |
carnavDayGrey: 'carnav.day.grey', | |
hybridDay: { | |
options: { | |
base: 'aerial', | |
variant: 'hybrid.day' | |
} | |
}, | |
hybridDayMobile: { | |
options: { | |
base: 'aerial', | |
variant: 'hybrid.day.mobile' | |
} | |
}, | |
pedestrianDay: 'pedestrian.day', | |
pedestrianNight: 'pedestrian.night', | |
satelliteDay: { | |
options: { | |
base: 'aerial', | |
variant: 'satellite.day' | |
} | |
}, | |
terrainDay: { | |
options: { | |
base: 'aerial', | |
variant: 'terrain.day' | |
} | |
}, | |
terrainDayMobile: { | |
options: { | |
base: 'aerial', | |
variant: 'terrain.day.mobile' | |
} | |
} | |
} | |
}, | |
FreeMapSK: { | |
url: 'http://t{s}.freemap.sk/T/{z}/{x}/{y}.jpeg', | |
options: { | |
minZoom: 8, | |
maxZoom: 16, | |
subdomains: '1234', | |
bounds: [[47.204642, 15.996093], [49.830896, 22.576904]], | |
attribution: | |
'{attribution.OpenStreetMap}, vizualization CC-By-SA 2.0 <a href="http://freemap.sk">Freemap.sk</a>' | |
} | |
}, | |
MtbMap: { | |
url: 'http://tile.mtbmap.cz/mtbmap_tiles/{z}/{x}/{y}.png', | |
options: { | |
attribution: | |
'{attribution.OpenStreetMap} & USGS' | |
} | |
}, | |
CartoDB: { | |
url: 'http://{s}.basemaps.cartocdn.com/{variant}/{z}/{x}/{y}.png', | |
options: { | |
attribution: '{attribution.OpenStreetMap} © <a href="http://cartodb.com/attributions">CartoDB</a>', | |
subdomains: 'abcd', | |
maxZoom: 19, | |
variant: 'light_all' | |
}, | |
variants: { | |
Positron: 'light_all', | |
PositronNoLabels: 'light_nolabels', | |
PositronOnlyLabels: 'light_only_labels', | |
DarkMatter: 'dark_all', | |
DarkMatterNoLabels: 'dark_nolabels', | |
DarkMatterOnlyLabels: 'dark_only_labels' | |
} | |
}, | |
HikeBike: { | |
url: 'http://{s}.tiles.wmflabs.org/{variant}/{z}/{x}/{y}.png', | |
options: { | |
maxZoom: 19, | |
attribution: '{attribution.OpenStreetMap}', | |
variant: 'hikebike' | |
}, | |
variants: { | |
HikeBike: {}, | |
HillShading: { | |
options: { | |
maxZoom: 15, | |
variant: 'hillshading' | |
} | |
} | |
} | |
}, | |
BasemapAT: { | |
url: '//maps{s}.wien.gv.at/basemap/{variant}/normal/google3857/{z}/{y}/{x}.{format}', | |
options: { | |
maxZoom: 19, | |
attribution: 'Datenquelle: <a href="www.basemap.at">basemap.at</a>', | |
subdomains: ['', '1', '2', '3', '4'], | |
format: 'png', | |
bounds: [[46.358770, 8.782379], [49.037872, 17.189532]], | |
variant: 'geolandbasemap' | |
}, | |
variants: { | |
basemap: 'geolandbasemap', | |
grau: 'bmapgrau', | |
overlay: 'bmapoverlay', | |
highdpi: { | |
options: { | |
variant: 'bmaphidpi', | |
format: 'jpeg' | |
} | |
}, | |
orthofoto: { | |
options: { | |
variant: 'bmaporthofoto30cm', | |
format: 'jpeg' | |
} | |
} | |
} | |
}, | |
NASAGIBS: { | |
url: '//map1.vis.earthdata.nasa.gov/wmts-webmerc/{variant}/default/{time}/{tilematrixset}{maxZoom}/{z}/{y}/{x}.{format}', | |
options: { | |
attribution: | |
'Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System ' + | |
'(<a href="https://earthdata.nasa.gov">ESDIS</a>) with funding provided by NASA/HQ.', | |
bounds: [[-85.0511287776, -179.999999975], [85.0511287776, 179.999999975]], | |
minZoom: 1, | |
maxZoom: 9, | |
format: 'jpg', | |
time: '', | |
tilematrixset: 'GoogleMapsCompatible_Level' | |
}, | |
variants: { | |
ModisTerraTrueColorCR: 'MODIS_Terra_CorrectedReflectance_TrueColor', | |
ModisTerraBands367CR: 'MODIS_Terra_CorrectedReflectance_Bands367', | |
ViirsEarthAtNight2012: { | |
options: { | |
variant: 'VIIRS_CityLights_2012', | |
maxZoom: 8 | |
} | |
}, | |
ModisTerraLSTDay: { | |
options: { | |
variant: 'MODIS_Terra_Land_Surface_Temp_Day', | |
format: 'png', | |
maxZoom: 7, | |
opacity: 0.75 | |
} | |
}, | |
ModisTerraSnowCover: { | |
options: { | |
variant: 'MODIS_Terra_Snow_Cover', | |
format: 'png', | |
maxZoom: 8, | |
opacity: 0.75 | |
} | |
}, | |
ModisTerraAOD: { | |
options: { | |
variant: 'MODIS_Terra_Aerosol', | |
format: 'png', | |
maxZoom: 6, | |
opacity: 0.75 | |
} | |
}, | |
ModisTerraChlorophyll: { | |
options: { | |
variant: 'MODIS_Terra_Chlorophyll_A', | |
format: 'png', | |
maxZoom: 7, | |
opacity: 0.75 | |
} | |
} | |
} | |
}, | |
NLS: { | |
// NLS maps are copyright National library of Scotland. | |
// http://maps.nls.uk/projects/api/index.html | |
// Please contact NLS for anything other than non-commercial low volume usage | |
// | |
// Map sources: Ordnance Survey 1:1m to 1:63K, 1920s-1940s | |
// z0-9 - 1:1m | |
// z10-11 - quarter inch (1:253440) | |
// z12-18 - one inch (1:63360) | |
url: '//nls-{s}.tileserver.com/nls/{z}/{x}/{y}.jpg', | |
options: { | |
attribution: '<a href="http://geo.nls.uk/maps/">National Library of Scotland Historic Maps</a>', | |
bounds: [[49.6, -12], [61.7, 3]], | |
minZoom: 1, | |
maxZoom: 18, | |
subdomains: '0123', | |
} | |
} | |
}; | |
L.tileLayer.provider = function (provider, options) { | |
return new L.TileLayer.Provider(provider, options); | |
}; | |
return L; | |
})); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@import url(http://fonts.googleapis.com/css?family=Source+Code+Pro:400,600); | |
@font-face { | |
font-family: 'unfpabold'; | |
src: url("http://unfpamaldives.github.io/migration/css/unfpa-bold-webfont.eot"); | |
} | |
@font-face { | |
font-family: 'unfpasemibold'; | |
" src: url("http://unfpamaldives.github.io/migration/css/unfpa-semibold-webfont.eot"); | |
} | |
@font-face { | |
font-family: 'unfpatext'; | |
src: url("http://unfpamaldives.github.io/migration/css/unfpa-text-webfont.eot"); | |
} | |
@font-face { | |
font-family: 'unfpasemibolditalic'; | |
src: url("http://unfpamaldives.github.io/migration/css/unfpa-semibolditalic-webfont.eot"); | |
} | |
@font-face { | |
font-family: 'unfpatextitalic'; | |
src: url("http://unfpamaldives.github.io/migration/css/unfpa-textitalic-webfont.eot"); | |
} | |
p3 { | |
margin-left: 0; | |
margin-right: 0; | |
font: 14px "unfpabold"; | |
font-weight: bold | |
} | |
p4 { | |
margin-left: 0; | |
margin-right: 0; | |
font: 14px "unfpatext"; | |
font-weight: normal | |
} | |
.leaflet-label { | |
background: rgb(235, 235, 235); | |
background: rgba(235, 235, 235, 0.81); | |
background-clip: padding-box; | |
border-color: #777; | |
border-color: rgba(0,0,0,0.25); | |
border-radius: 4px; | |
border-style: solid; | |
border-width: 4px; | |
color: #111; | |
display: block; | |
font: 14px/20px "unfpabold"; | |
padding: 1px 6px; | |
position: absolute; | |
-webkit-user-select: none; | |
-moz-user-select: none; | |
-ms-user-select: none; | |
user-select: none; | |
pointer-events: none; | |
white-space: nowrap; | |
z-index: 6; | |
} | |
.leaflet-label.leaflet-clickable { | |
cursor: pointer; | |
pointer-events: auto; | |
} | |
.leaflet-label:before, | |
.leaflet-label:after { | |
border-top: 6px solid transparent; | |
border-bottom: 6px solid transparent; | |
content: none; | |
position: absolute; | |
top: 5px; | |
} | |
.leaflet-label:before { | |
border-right: 6px solid black; | |
border-right-color: inherit; | |
left: -10px; | |
} | |
.leaflet-label:after { | |
border-left: 6px solid black; | |
border-left-color: inherit; | |
right: -10px; | |
} | |
.leaflet-label-right:before, | |
.leaflet-label-left:after { | |
content: ""; | |
} | |
.leaflet-container { | |
font: 14px/ "unfpatext"; | |
font-weight: normal | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Leaflet.label, a plugin that adds labels to markers and vectors for Leaflet powered maps. | |
(c) 2012-2013, Jacob Toye, Smartrak | |
https://github.com/Leaflet/Leaflet.label | |
http://leafletjs.com | |
https://github.com/jacobtoye | |
*/ | |
(function(t){var e=t.L;e.labelVersion="0.2.2-dev",e.Label=(e.Layer?e.Layer:e.Class).extend({includes:e.Mixin.Events,options:{className:"",clickable:!1,direction:"right",noHide:!1,offset:[12,-15],opacity:1,zoomAnimation:!0},initialize:function(t,i){e.setOptions(this,t),this._source=i,this._animated=e.Browser.any3d&&this.options.zoomAnimation,this._isOpen=!1},onAdd:function(t){this._map=t,this._pane=this.options.pane?t._panes[this.options.pane]:this._source instanceof e.Marker?t._panes.markerPane:t._panes.popupPane,this._container||this._initLayout(),this._pane.appendChild(this._container),this._initInteraction(),this._update(),this.setOpacity(this.options.opacity),t.on("moveend",this._onMoveEnd,this).on("viewreset",this._onViewReset,this),this._animated&&t.on("zoomanim",this._zoomAnimation,this),e.Browser.touch&&!this.options.noHide&&(e.DomEvent.on(this._container,"click",this.close,this),t.on("click",this.close,this))},onRemove:function(t){this._pane.removeChild(this._container),t.off({zoomanim:this._zoomAnimation,moveend:this._onMoveEnd,viewreset:this._onViewReset},this),this._removeInteraction(),this._map=null},setLatLng:function(t){return this._latlng=e.latLng(t),this._map&&this._updatePosition(),this},setContent:function(t){return this._previousContent=this._content,this._content=t,this._updateContent(),this},close:function(){var t=this._map;t&&(e.Browser.touch&&!this.options.noHide&&(e.DomEvent.off(this._container,"click",this.close),t.off("click",this.close,this)),t.removeLayer(this))},updateZIndex:function(t){this._zIndex=t,this._container&&this._zIndex&&(this._container.style.zIndex=t)},setOpacity:function(t){this.options.opacity=t,this._container&&e.DomUtil.setOpacity(this._container,t)},_initLayout:function(){this._container=e.DomUtil.create("div","leaflet-label "+this.options.className+" leaflet-zoom-animated"),this.updateZIndex(this._zIndex)},_update:function(){this._map&&(this._container.style.visibility="hidden",this._updateContent(),this._updatePosition(),this._container.style.visibility="")},_updateContent:function(){this._content&&this._map&&this._prevContent!==this._content&&"string"==typeof this._content&&(this._container.innerHTML=this._content,this._prevContent=this._content,this._labelWidth=this._container.offsetWidth)},_updatePosition:function(){var t=this._map.latLngToLayerPoint(this._latlng);this._setPosition(t)},_setPosition:function(t){var i=this._map,n=this._container,o=i.latLngToContainerPoint(i.getCenter()),s=i.layerPointToContainerPoint(t),a=this.options.direction,l=this._labelWidth,h=e.point(this.options.offset);"right"===a||"auto"===a&&s.x<o.x?(e.DomUtil.addClass(n,"leaflet-label-right"),e.DomUtil.removeClass(n,"leaflet-label-left"),t=t.add(h)):(e.DomUtil.addClass(n,"leaflet-label-left"),e.DomUtil.removeClass(n,"leaflet-label-right"),t=t.add(e.point(-h.x-l,h.y))),e.DomUtil.setPosition(n,t)},_zoomAnimation:function(t){var e=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center).round();this._setPosition(e)},_onMoveEnd:function(){this._animated&&"auto"!==this.options.direction||this._updatePosition()},_onViewReset:function(t){t&&t.hard&&this._update()},_initInteraction:function(){if(this.options.clickable){var t=this._container,i=["dblclick","mousedown","mouseover","mouseout","contextmenu"];e.DomUtil.addClass(t,"leaflet-clickable"),e.DomEvent.on(t,"click",this._onMouseClick,this);for(var n=0;i.length>n;n++)e.DomEvent.on(t,i[n],this._fireMouseEvent,this)}},_removeInteraction:function(){if(this.options.clickable){var t=this._container,i=["dblclick","mousedown","mouseover","mouseout","contextmenu"];e.DomUtil.removeClass(t,"leaflet-clickable"),e.DomEvent.off(t,"click",this._onMouseClick,this);for(var n=0;i.length>n;n++)e.DomEvent.off(t,i[n],this._fireMouseEvent,this)}},_onMouseClick:function(t){this.hasEventListeners(t.type)&&e.DomEvent.stopPropagation(t),this.fire(t.type,{originalEvent:t})},_fireMouseEvent:function(t){this.fire(t.type,{originalEvent:t}),"contextmenu"===t.type&&this.hasEventListeners(t.type)&&e.DomEvent.preventDefault(t),"mousedown"!==t.type?e.DomEvent.stopPropagation(t):e.DomEvent.preventDefault(t)}}),e.BaseMarkerMethods={showLabel:function(){return this.label&&this._map&&(this.label.setLatLng(this._latlng),this._map.showLabel(this.label)),this},hideLabel:function(){return this.label&&this.label.close(),this},setLabelNoHide:function(t){this._labelNoHide!==t&&(this._labelNoHide=t,t?(this._removeLabelRevealHandlers(),this.showLabel()):(this._addLabelRevealHandlers(),this.hideLabel()))},bindLabel:function(t,i){var n=this.options.icon?this.options.icon.options.labelAnchor:this.options.labelAnchor,o=e.point(n)||e.point(0,0);return o=o.add(e.Label.prototype.options.offset),i&&i.offset&&(o=o.add(i.offset)),i=e.Util.extend({offset:o},i),this._labelNoHide=i.noHide,this.label||(this._labelNoHide||this._addLabelRevealHandlers(),this.on("remove",this.hideLabel,this).on("move",this._moveLabel,this).on("add",this._onMarkerAdd,this),this._hasLabelHandlers=!0),this.label=new e.Label(i,this).setContent(t),this},unbindLabel:function(){return this.label&&(this.hideLabel(),this.label=null,this._hasLabelHandlers&&(this._labelNoHide||this._removeLabelRevealHandlers(),this.off("remove",this.hideLabel,this).off("move",this._moveLabel,this).off("add",this._onMarkerAdd,this)),this._hasLabelHandlers=!1),this},updateLabelContent:function(t){this.label&&this.label.setContent(t)},getLabel:function(){return this.label},_onMarkerAdd:function(){this._labelNoHide&&this.showLabel()},_addLabelRevealHandlers:function(){this.on("mouseover",this.showLabel,this).on("mouseout",this.hideLabel,this),e.Browser.touch&&this.on("click",this.showLabel,this)},_removeLabelRevealHandlers:function(){this.off("mouseover",this.showLabel,this).off("mouseout",this.hideLabel,this),e.Browser.touch&&this.off("click",this.showLabel,this)},_moveLabel:function(t){this.label.setLatLng(t.latlng)}},e.Icon.Default.mergeOptions({labelAnchor:new e.Point(9,-20)}),e.Marker.mergeOptions({icon:new e.Icon.Default}),e.Marker.include(e.BaseMarkerMethods),e.Marker.include({_originalUpdateZIndex:e.Marker.prototype._updateZIndex,_updateZIndex:function(t){var e=this._zIndex+t;this._originalUpdateZIndex(t),this.label&&this.label.updateZIndex(e)},_originalSetOpacity:e.Marker.prototype.setOpacity,setOpacity:function(t,e){this.options.labelHasSemiTransparency=e,this._originalSetOpacity(t)},_originalUpdateOpacity:e.Marker.prototype._updateOpacity,_updateOpacity:function(){var t=0===this.options.opacity?0:1;this._originalUpdateOpacity(),this.label&&this.label.setOpacity(this.options.labelHasSemiTransparency?this.options.opacity:t)},_originalSetLatLng:e.Marker.prototype.setLatLng,setLatLng:function(t){return this.label&&!this._labelNoHide&&this.hideLabel(),this._originalSetLatLng(t)}}),e.CircleMarker.mergeOptions({labelAnchor:new e.Point(0,0)}),e.CircleMarker.include(e.BaseMarkerMethods),e.Path.include({bindLabel:function(t,i){return this.label&&this.label.options===i||(this.label=new e.Label(i,this)),this.label.setContent(t),this._showLabelAdded||(this.on("mouseover",this._showLabel,this).on("mousemove",this._moveLabel,this).on("mouseout remove",this._hideLabel,this),e.Browser.touch&&this.on("click",this._showLabel,this),this._showLabelAdded=!0),this},unbindLabel:function(){return this.label&&(this._hideLabel(),this.label=null,this._showLabelAdded=!1,this.off("mouseover",this._showLabel,this).off("mousemove",this._moveLabel,this).off("mouseout remove",this._hideLabel,this)),this},updateLabelContent:function(t){this.label&&this.label.setContent(t)},_showLabel:function(t){this.label.setLatLng(t.latlng),this._map.showLabel(this.label)},_moveLabel:function(t){this.label.setLatLng(t.latlng)},_hideLabel:function(){this.label.close()}}),e.Map.include({showLabel:function(t){return this.addLayer(t)}}),e.FeatureGroup.include({clearLayers:function(){return this.unbindLabel(),this.eachLayer(this.removeLayer,this),this},bindLabel:function(t,e){return this.invoke("bindLabel",t,e)},unbindLabel:function(){return this.invoke("unbindLabel")},updateLabelContent:function(t){this.invoke("updateLabelContent",t)}})})(window,document); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
L.LineUtil.PolylineDecorator={computeAngle:function(a,b){return 180*Math.atan2(b.y-a.y,b.x-a.x)/Math.PI+90},getPointPathPixelLength:function(a){var b=a.length;if(2>b)return 0;for(var c=0,d=a[0],e=1;e<b;e++)c+=d.distanceTo(d=a[e]);return c},getPixelLength:function(a,b){var c=a instanceof L.Polyline?a.getLatLngs():a,d=c.length;if(2>d)return 0;for(var e=0,f=b.project(c[0]),g=1;g<d;g++)e+=f.distanceTo(f=b.project(c[g]));return e},projectPatternOnPath:function(a,b,c,d){var e=[],f;f=0;for(l=a.length;f< | |
l;f++)e[f]=d.project(a[f]);a=this.projectPatternOnPointPath(e,b,c);f=0;for(l=a.length;f<l;f++)a[f].latLng=d.unproject(a[f].pt);return a},projectPatternOnPointPath:function(a,b,c){var d=[],e=this.getPointPathPixelLength(a)*c;b=this.interpolateOnPointPath(a,b);d.push(b);if(0<c){a=a.slice(b.predecessor);a[0]=b.pt;for(c=this.getPointPathPixelLength(a);e<=c;)b=this.interpolateOnPointPath(a,e/c),d.push(b),a=a.slice(b.predecessor),a[0]=b.pt,c=this.getPointPathPixelLength(a)}return d},interpolateOnPointPath:function(a, | |
b){var c=a.length;if(2>c)return null;if(0>=b)return{pt:a[0],predecessor:0,heading:this.computeAngle(a[0],a[1])};if(1<=b)return{pt:a[c-1],predecessor:c-1,heading:this.computeAngle(a[c-2],a[c-1])};if(2==c)return{pt:this.interpolateBetweenPoints(a[0],a[1],b),predecessor:0,heading:this.computeAngle(a[0],a[1])};for(var d=this.getPointPathPixelLength(a),e=a[0],f=e,g=0,h=0,k=0,j=1;j<c&&h<b;j++)e=f,g=h,f=a[j],k+=e.distanceTo(f),h=k/d;return{pt:this.interpolateBetweenPoints(e,f,(b-g)/(h-g)),predecessor:j- | |
2,heading:this.computeAngle(e,f)}},interpolateBetweenPoints:function(a,b,c){return b.x!=a.x?new L.Point(a.x*(1-c)+c*b.x,a.y*(1-c)+c*b.y):new L.Point(a.x,a.y+(b.y-a.y)*c)}};L.RotatedMarker=L.Marker.extend({options:{angle:0},_setPos:function(a){L.Marker.prototype._setPos.call(this,a);if(L.DomUtil.TRANSFORM)this._icon.style[L.DomUtil.TRANSFORM]+=" rotate("+this.options.angle+"deg)";else if(L.Browser.ie){var b=this.options.angle*L.LatLng.DEG_TO_RAD;a=Math.cos(b);b=Math.sin(b);this._icon.style.filter+=" progid:DXImageTransform.Microsoft.Matrix(sizingMethod='auto expand', M11="+a+", M12="+-b+", M21="+b+", M22="+a+")"}}}); | |
L.rotatedMarker=function(a,b){return new L.RotatedMarker(a,b)};L.Symbol=L.Symbol||{}; | |
L.Symbol.Dash=L.Class.extend({isZoomDependant:!0,options:{pixelSize:10,pathOptions:{}},initialize:function(a){L.Util.setOptions(this,a);this.options.pathOptions.clickable=!1},buildSymbol:function(a,b,c){b=this.options;if(1>=b.pixelSize)return new L.Polyline([a.latLng,a.latLng],b.pathOptions);var d=c.project(a.latLng);a=-(a.heading-90)*L.LatLng.DEG_TO_RAD;a=new L.Point(d.x+b.pixelSize*Math.cos(a+Math.PI)/2,d.y+b.pixelSize*Math.sin(a)/2);d=d.add(d.subtract(a));return new L.Polyline([c.unproject(a),c.unproject(d)], | |
b.pathOptions)}});L.Symbol.dash=function(a){return new L.Symbol.Dash(a)}; | |
L.Symbol.ArrowHead=L.Class.extend({isZoomDependant:!0,options:{polygon:!0,pixelSize:10,headAngle:60,pathOptions:{stroke:!1,weight:2}},initialize:function(a){L.Util.setOptions(this,a);this.options.pathOptions.clickable=!1},buildSymbol:function(a,b,c){b=this.options;return b.polygon?new L.Polygon(this._buildArrowPath(a,c),b.pathOptions):new L.Polyline(this._buildArrowPath(a,c),b.pathOptions)},_buildArrowPath:function(a,b){var c=b.project(a.latLng),d=-(a.heading-90)*L.LatLng.DEG_TO_RAD,e=this.options.headAngle/ | |
2*L.LatLng.DEG_TO_RAD,f=d+e,d=d-e,f=new L.Point(c.x-this.options.pixelSize*Math.cos(f),c.y+this.options.pixelSize*Math.sin(f)),c=new L.Point(c.x-this.options.pixelSize*Math.cos(d),c.y+this.options.pixelSize*Math.sin(d));return[b.unproject(f),a.latLng,b.unproject(c)]}});L.Symbol.arrowHead=function(a){return new L.Symbol.ArrowHead(a)}; | |
L.Symbol.Marker=L.Class.extend({isZoomDependant:!1,options:{markerOptions:{},rotate:!1},initialize:function(a){L.Util.setOptions(this,a);this.options.markerOptions.clickable=!1;this.options.markerOptions.draggable=!1;this.isZoomDependant=L.Browser.ie&&this.options.rotate},buildSymbol:function(a){return this.options.rotate?(this.options.markerOptions.angle=a.heading,new L.RotatedMarker(a.latLng,this.options.markerOptions)):new L.Marker(a.latLng,this.options.markerOptions)}});L.Symbol.marker=function(a){return new L.Symbol.Marker(a)};L.PolylineDecorator=L.LayerGroup.extend({options:{patterns:[]},initialize:function(a,b){L.LayerGroup.prototype.initialize.call(this);L.Util.setOptions(this,b);this._map=null;this._initPaths(a);this._initPatterns()},_initPaths:function(a){this._paths=[];var b=!1;if(a instanceof L.MultiPolyline||(b=a instanceof L.MultiPolygon)){a=a.getLatLngs();for(var c=0;c<a.length;c++)this._initPath(a[c],b)}else if(a instanceof L.Polyline)this._initPath(a.getLatLngs(),a instanceof L.Polygon);else if(L.Util.isArray(a)&& | |
0<a.length)if(a[0]instanceof L.Polyline)for(c=0;c<a.length;c++)this._initPath(a[c].getLatLngs(),a[c]instanceof L.Polygon);else this._initPath(a)},_isCoordArray:function(a){return L.Util.isArray(a)&&0<a.length&&(a[0]instanceof L.LatLng||L.Util.isArray(a[0])&&2==a[0].length&&"number"===typeof a[0][0])},_initPath:function(a,b){var c;c=this._isCoordArray(a)?[a]:a;for(var d=0;d<c.length;d++)b&&c[d].push(c[d][0]),this._paths.push(c[d])},_initPatterns:function(){this._isZoomDependant=!1;this._patterns=[]; | |
for(var a,b=0;b<this.options.patterns.length;b++)a=this._parsePatternDef(this.options.patterns[b]),this._patterns.push(a),this._isZoomDependant=this._isZoomDependant||a.isOffsetInPixels||a.isRepeatInPixels||a.symbolFactory.isZoomDependant},setPatterns:function(a){this.options.patterns=a;this._initPatterns();this._softRedraw()},setPaths:function(a){this._initPaths(a);this.redraw()},_parsePatternDef:function(a){var b={cache:[],symbolFactory:a.symbol,isOffsetInPixels:!1,isRepeatInPixels:!1};"string"=== | |
typeof a.offset&&-1!=a.offset.indexOf("%")?b.offset=parseFloat(a.offset)/100:(b.offset=parseFloat(a.offset),b.isOffsetInPixels=0<b.offset);"string"===typeof a.repeat&&-1!=a.repeat.indexOf("%")?b.repeat=parseFloat(a.repeat)/100:(b.repeat=parseFloat(a.repeat),b.isRepeatInPixels=0<b.repeat);return b},onAdd:function(a){this._map=a;this._draw();if(this._isZoomDependant)this._map.on("zoomend",this._softRedraw,this)},onRemove:function(a){this._map.off("zoomend",this._softRedraw,this);this._map=null;L.LayerGroup.prototype.onRemove.call(this, | |
a)},_buildSymbols:function(a,b,c){for(var d=[],e=0,f=c.length;e<f;e++)d.push(b.buildSymbol(c[e],a,this._map,e,f));return d},_getCache:function(a,b,c){var d=a.cache[b];return"undefined"===typeof d?(a.cache[b]=[],null):d[c]},_getDirectionPoints:function(a,b){var c=this._map.getZoom(),d=this._getCache(b,c,a);if(d)return d;var e;e=null;var f=this._paths[a];b.isOffsetInPixels?(e=L.LineUtil.PolylineDecorator.getPixelLength(f,this._map),d=b.offset/e):d=b.offset;b.isRepeatInPixels?(e=null!==e?e:L.LineUtil.PolylineDecorator.getPixelLength(f, | |
this._map),e=b.repeat/e):e=b.repeat;d=L.LineUtil.PolylineDecorator.projectPatternOnPath(f,d,e,this._map);return b.cache[c][a]=d},redraw:function(){this._redraw(!0)},_softRedraw:function(){this._redraw(!1)},_redraw:function(a){if(null!==this._map){this.clearLayers();if(a)for(a=0;a<this._patterns.length;a++)this._patterns[a].cache=[];this._draw()}},_drawPattern:function(a){for(var b,c=0;c<this._paths.length;c++){b=this._getDirectionPoints(c,a);b=this._buildSymbols(this._paths[c],a.symbolFactory,b); | |
for(var d=0;d<b.length;d++)this.addLayer(b[d])}},_draw:function(){for(var a=0;a<this._patterns.length;a++)this._drawPattern(this._patterns[a])}});L.polylineDecorator=function(a,b){return new L.PolylineDecorator(a,b)}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
source | target | value | |
---|---|---|---|
Malé | Malé | 54207 | |
Malé | Haa Alifu | 124 | |
Malé | Haa Dhaalu | 215 | |
Malé | Shaviyani | 77 | |
Malé | Noonu | 127 | |
Malé | Raa | 134 | |
Malé | Baa | 141 | |
Malé | Lhaviyani | 106 | |
Malé | Kaafu | 783 | |
Malé | Alifu Alifu | 107 | |
Malé | Alifu Dhaalu | 181 | |
Malé | Vaavu | 26 | |
Malé | Meemu | 77 | |
Malé | Faafu | 26 | |
Malé | Dhaal | 100 | |
Malé | Thaa | 149 | |
Malé | Laamu | 132 | |
Malé | Gaafu Alif | 85 | |
Malé | Gaaf Dhaalu | 147 | |
Malé | Gnaviyani | 85 | |
Malé | Seenu | 270 | |
Haa Alifu | Malé | 5628 | |
Haa Alifu | Haa Alifu | 12796 | |
Haa Alifu | Haa Dhaalu | 223 | |
Haa Alifu | Shaviyani | 28 | |
Haa Alifu | Noonu | 76 | |
Haa Alifu | Raa | 55 | |
Haa Alifu | Baa | 77 | |
Haa Alifu | Lhaviyani | 73 | |
Haa Alifu | Kaafu | 732 | |
Haa Alifu | Alifu Alifu | 112 | |
Haa Alifu | Alifu Dhaalu | 212 | |
Haa Alifu | Vaavu | 7 | |
Haa Alifu | Meemu | 30 | |
Haa Alifu | Faafu | 11 | |
Haa Alifu | Dhaal | 63 | |
Haa Alifu | Thaa | 29 | |
Haa Alifu | Laamu | 24 | |
Haa Alifu | Gaafu Alif | 25 | |
Haa Alifu | Gaaf Dhaalu | 27 | |
Haa Alifu | Gnaviyani | 9 | |
Haa Alifu | Seenu | 40 | |
Haa Dhaalu | Malé | 4582 | |
Haa Dhaalu | Haa Alifu | 197 | |
Haa Dhaalu | Haa Dhaalu | 17530 | |
Haa Dhaalu | Shaviyani | 99 | |
Haa Dhaalu | Noonu | 66 | |
Haa Dhaalu | Raa | 55 | |
Haa Dhaalu | Baa | 99 | |
Haa Dhaalu | Lhaviyani | 47 | |
Haa Dhaalu | Kaafu | 948 | |
Haa Dhaalu | Alifu Alifu | 202 | |
Haa Dhaalu | Alifu Dhaalu | 208 | |
Haa Dhaalu | Vaavu | 11 | |
Haa Dhaalu | Meemu | 37 | |
Haa Dhaalu | Faafu | 7 | |
Haa Dhaalu | Dhaal | 52 | |
Haa Dhaalu | Thaa | 22 | |
Haa Dhaalu | Laamu | 31 | |
Haa Dhaalu | Gaafu Alif | 29 | |
Haa Dhaalu | Gaaf Dhaalu | 31 | |
Haa Dhaalu | Gnaviyani | 31 | |
Haa Dhaalu | Seenu | 30 | |
Shaviyani | Malé | 3077 | |
Shaviyani | Haa Alifu | 37 | |
Shaviyani | Haa Dhaalu | 127 | |
Shaviyani | Shaviyani | 11911 | |
Shaviyani | Noonu | 101 | |
Shaviyani | Raa | 53 | |
Shaviyani | Baa | 100 | |
Shaviyani | Lhaviyani | 89 | |
Shaviyani | Kaafu | 403 | |
Shaviyani | Alifu Alifu | 70 | |
Shaviyani | Alifu Dhaalu | 139 | |
Shaviyani | Vaavu | 13 | |
Shaviyani | Meemu | 14 | |
Shaviyani | Faafu | 5 | |
Shaviyani | Dhaal | 43 | |
Shaviyani | Thaa | 12 | |
Shaviyani | Laamu | 22 | |
Shaviyani | Gaafu Alif | 21 | |
Shaviyani | Gaaf Dhaalu | 8 | |
Shaviyani | Gnaviyani | 10 | |
Shaviyani | Seenu | 21 | |
Noonu | Malé | 3472 | |
Noonu | Haa Alifu | 50 | |
Noonu | Haa Dhaalu | 49 | |
Noonu | Shaviyani | 52 | |
Noonu | Noonu | 10280 | |
Noonu | Raa | 65 | |
Noonu | Baa | 79 | |
Noonu | Lhaviyani | 272 | |
Noonu | Kaafu | 411 | |
Noonu | Alifu Alifu | 43 | |
Noonu | Alifu Dhaalu | 137 | |
Noonu | Vaavu | 8 | |
Noonu | Meemu | 21 | |
Noonu | Faafu | 1 | |
Noonu | Dhaal | 31 | |
Noonu | Thaa | 20 | |
Noonu | Laamu | 32 | |
Noonu | Gaafu Alif | 15 | |
Noonu | Gaaf Dhaalu | 21 | |
Noonu | Gnaviyani | 6 | |
Noonu | Seenu | 18 | |
Raa | Malé | 4842 | |
Raa | Haa Alifu | 43 | |
Raa | Haa Dhaalu | 52 | |
Raa | Shaviyani | 92 | |
Raa | Noonu | 84 | |
Raa | Raa | 14694 | |
Raa | Baa | 200 | |
Raa | Lhaviyani | 134 | |
Raa | Kaafu | 391 | |
Raa | Alifu Alifu | 81 | |
Raa | Alifu Dhaalu | 103 | |
Raa | Vaavu | 19 | |
Raa | Meemu | 16 | |
Raa | Faafu | 12 | |
Raa | Dhaal | 40 | |
Raa | Thaa | 31 | |
Raa | Laamu | 20 | |
Raa | Gaafu Alif | 22 | |
Raa | Gaaf Dhaalu | 7 | |
Raa | Gnaviyani | 12 | |
Raa | Seenu | 29 | |
Baa | Malé | 3673 | |
Baa | Haa Alifu | 19 | |
Baa | Haa Dhaalu | 32 | |
Baa | Shaviyani | 30 | |
Baa | Noonu | 29 | |
Baa | Raa | 48 | |
Baa | Baa | 8690 | |
Baa | Lhaviyani | 34 | |
Baa | Kaafu | 274 | |
Baa | Alifu Alifu | 66 | |
Baa | Alifu Dhaalu | 79 | |
Baa | Vaavu | 6 | |
Baa | Meemu | 15 | |
Baa | Faafu | 19 | |
Baa | Dhaal | 17 | |
Baa | Thaa | 14 | |
Baa | Laamu | 19 | |
Baa | Gaafu Alif | 13 | |
Baa | Gaaf Dhaalu | 22 | |
Baa | Gnaviyani | 11 | |
Baa | Seenu | 26 | |
Lhaviyani | Malé | 3228 | |
Lhaviyani | Haa Alifu | 27 | |
Lhaviyani | Haa Dhaalu | 37 | |
Lhaviyani | Shaviyani | 34 | |
Lhaviyani | Noonu | 117 | |
Lhaviyani | Raa | 43 | |
Lhaviyani | Baa | 83 | |
Lhaviyani | Lhaviyani | 7624 | |
Lhaviyani | Kaafu | 348 | |
Lhaviyani | Alifu Alifu | 44 | |
Lhaviyani | Alifu Dhaalu | 95 | |
Lhaviyani | Vaavu | 8 | |
Lhaviyani | Meemu | 10 | |
Lhaviyani | Faafu | 9 | |
Lhaviyani | Dhaal | 18 | |
Lhaviyani | Thaa | 20 | |
Lhaviyani | Laamu | 22 | |
Lhaviyani | Gaafu Alif | 20 | |
Lhaviyani | Gaaf Dhaalu | 27 | |
Lhaviyani | Gnaviyani | 13 | |
Lhaviyani | Seenu | 20 | |
Kaafu | Malé | 2153 | |
Kaafu | Haa Alifu | 26 | |
Kaafu | Haa Dhaalu | 18 | |
Kaafu | Shaviyani | 19 | |
Kaafu | Noonu | 25 | |
Kaafu | Raa | 28 | |
Kaafu | Baa | 46 | |
Kaafu | Lhaviyani | 36 | |
Kaafu | Kaafu | 9612 | |
Kaafu | Alifu Alifu | 31 | |
Kaafu | Alifu Dhaalu | 67 | |
Kaafu | Vaavu | 4 | |
Kaafu | Meemu | 14 | |
Kaafu | Faafu | 20 | |
Kaafu | Dhaal | 23 | |
Kaafu | Thaa | 15 | |
Kaafu | Laamu | 18 | |
Kaafu | Gaafu Alif | 26 | |
Kaafu | Gaaf Dhaalu | 21 | |
Kaafu | Gnaviyani | 8 | |
Kaafu | Seenu | 24 | |
Alifu Alifu | Malé | 1485 | |
Alifu Alifu | Haa Alifu | 8 | |
Alifu Alifu | Haa Dhaalu | 8 | |
Alifu Alifu | Shaviyani | 11 | |
Alifu Alifu | Noonu | 14 | |
Alifu Alifu | Raa | 10 | |
Alifu Alifu | Baa | 23 | |
Alifu Alifu | Lhaviyani | 22 | |
Alifu Alifu | Kaafu | 92 | |
Alifu Alifu | Alifu Alifu | 5424 | |
Alifu Alifu | Alifu Dhaalu | 64 | |
Alifu Alifu | Vaavu | 1 | |
Alifu Alifu | Meemu | 8 | |
Alifu Alifu | Faafu | 8 | |
Alifu Alifu | Dhaal | 6 | |
Alifu Alifu | Thaa | 6 | |
Alifu Alifu | Laamu | 9 | |
Alifu Alifu | Gaafu Alif | 3 | |
Alifu Alifu | Gaaf Dhaalu | 4 | |
Alifu Alifu | Gnaviyani | 6 | |
Alifu Alifu | Seenu | 29 | |
Alifu Dhaalu | Malé | 1799 | |
Alifu Dhaalu | Haa Alifu | 15 | |
Alifu Dhaalu | Haa Dhaalu | 25 | |
Alifu Dhaalu | Shaviyani | 11 | |
Alifu Dhaalu | Noonu | 8 | |
Alifu Dhaalu | Raa | 11 | |
Alifu Dhaalu | Baa | 19 | |
Alifu Dhaalu | Lhaviyani | 9 | |
Alifu Dhaalu | Kaafu | 118 | |
Alifu Dhaalu | Alifu Alifu | 96 | |
Alifu Dhaalu | Alifu Dhaalu | 7861 | |
Alifu Dhaalu | Vaavu | 9 | |
Alifu Dhaalu | Meemu | 12 | |
Alifu Dhaalu | Faafu | 13 | |
Alifu Dhaalu | Dhaal | 14 | |
Alifu Dhaalu | Thaa | 5 | |
Alifu Dhaalu | Laamu | 15 | |
Alifu Dhaalu | Gaafu Alif | 6 | |
Alifu Dhaalu | Gaaf Dhaalu | 12 | |
Alifu Dhaalu | Gnaviyani | 1 | |
Alifu Dhaalu | Seenu | 15 | |
Vaavu | Malé | 776 | |
Vaavu | Haa Alifu | 7 | |
Vaavu | Haa Dhaalu | 5 | |
Vaavu | Shaviyani | 1 | |
Vaavu | Noonu | 11 | |
Vaavu | Raa | 9 | |
Vaavu | Baa | 13 | |
Vaavu | Lhaviyani | 3 | |
Vaavu | Kaafu | 63 | |
Vaavu | Alifu Alifu | 15 | |
Vaavu | Alifu Dhaalu | 35 | |
Vaavu | Vaavu | 1406 | |
Vaavu | Meemu | 14 | |
Vaavu | Faafu | 2 | |
Vaavu | Dhaal | 5 | |
Vaavu | Thaa | 14 | |
Vaavu | Laamu | 1 | |
Vaavu | Gaafu Alif | 0 | |
Vaavu | Gaaf Dhaalu | 2 | |
Vaavu | Gnaviyani | 0 | |
Vaavu | Seenu | 2 | |
Meemu | Malé | 1857 | |
Meemu | Haa Alifu | 5 | |
Meemu | Haa Dhaalu | 18 | |
Meemu | Shaviyani | 7 | |
Meemu | Noonu | 26 | |
Meemu | Raa | 16 | |
Meemu | Baa | 14 | |
Meemu | Lhaviyani | 11 | |
Meemu | Kaafu | 125 | |
Meemu | Alifu Alifu | 31 | |
Meemu | Alifu Dhaalu | 67 | |
Meemu | Vaavu | 5 | |
Meemu | Meemu | 4486 | |
Meemu | Faafu | 11 | |
Meemu | Dhaal | 46 | |
Meemu | Thaa | 24 | |
Meemu | Laamu | 13 | |
Meemu | Gaafu Alif | 12 | |
Meemu | Gaaf Dhaalu | 11 | |
Meemu | Gnaviyani | 1 | |
Meemu | Seenu | 15 | |
Faafu | Malé | 1092 | |
Faafu | Haa Alifu | 4 | |
Faafu | Haa Dhaalu | 6 | |
Faafu | Shaviyani | 6 | |
Faafu | Noonu | 3 | |
Faafu | Raa | 4 | |
Faafu | Baa | 9 | |
Faafu | Lhaviyani | 6 | |
Faafu | Kaafu | 55 | |
Faafu | Alifu Alifu | 17 | |
Faafu | Alifu Dhaalu | 31 | |
Faafu | Vaavu | 5 | |
Faafu | Meemu | 16 | |
Faafu | Faafu | 3910 | |
Faafu | Dhaal | 41 | |
Faafu | Thaa | 7 | |
Faafu | Laamu | 10 | |
Faafu | Gaafu Alif | 6 | |
Faafu | Gaaf Dhaalu | 16 | |
Faafu | Gnaviyani | 3 | |
Faafu | Seenu | 11 | |
Dhaal | Malé | 1627 | |
Dhaal | Haa Alifu | 14 | |
Dhaal | Haa Dhaalu | 13 | |
Dhaal | Shaviyani | 6 | |
Dhaal | Noonu | 7 | |
Dhaal | Raa | 6 | |
Dhaal | Baa | 7 | |
Dhaal | Lhaviyani | 0 | |
Dhaal | Kaafu | 117 | |
Dhaal | Alifu Alifu | 11 | |
Dhaal | Alifu Dhaalu | 43 | |
Dhaal | Vaavu | 2 | |
Dhaal | Meemu | 24 | |
Dhaal | Faafu | 17 | |
Dhaal | Dhaal | 5141 | |
Dhaal | Thaa | 17 | |
Dhaal | Laamu | 23 | |
Dhaal | Gaafu Alif | 7 | |
Dhaal | Gaaf Dhaalu | 15 | |
Dhaal | Gnaviyani | 4 | |
Dhaal | Seenu | 15 | |
Thaa | Malé | 5014 | |
Thaa | Haa Alifu | 22 | |
Thaa | Haa Dhaalu | 26 | |
Thaa | Shaviyani | 18 | |
Thaa | Noonu | 32 | |
Thaa | Raa | 27 | |
Thaa | Baa | 30 | |
Thaa | Lhaviyani | 15 | |
Thaa | Kaafu | 229 | |
Thaa | Alifu Alifu | 20 | |
Thaa | Alifu Dhaalu | 60 | |
Thaa | Vaavu | 5 | |
Thaa | Meemu | 18 | |
Thaa | Faafu | 11 | |
Thaa | Dhaal | 47 | |
Thaa | Thaa | 8487 | |
Thaa | Laamu | 86 | |
Thaa | Gaafu Alif | 19 | |
Thaa | Gaaf Dhaalu | 20 | |
Thaa | Gnaviyani | 8 | |
Thaa | Seenu | 23 | |
Laamu | Malé | 3160 | |
Laamu | Haa Alifu | 26 | |
Laamu | Haa Dhaalu | 22 | |
Laamu | Shaviyani | 14 | |
Laamu | Noonu | 27 | |
Laamu | Raa | 15 | |
Laamu | Baa | 50 | |
Laamu | Lhaviyani | 24 | |
Laamu | Kaafu | 233 | |
Laamu | Alifu Alifu | 37 | |
Laamu | Alifu Dhaalu | 79 | |
Laamu | Vaavu | 12 | |
Laamu | Meemu | 38 | |
Laamu | Faafu | 13 | |
Laamu | Dhaal | 58 | |
Laamu | Thaa | 125 | |
Laamu | Laamu | 11380 | |
Laamu | Gaafu Alif | 47 | |
Laamu | Gaaf Dhaalu | 34 | |
Laamu | Gnaviyani | 18 | |
Laamu | Seenu | 33 | |
Gaafu Alif | Malé | 4413 | |
Gaafu Alif | Haa Alifu | 14 | |
Gaafu Alif | Haa Dhaalu | 9 | |
Gaafu Alif | Shaviyani | 12 | |
Gaafu Alif | Noonu | 18 | |
Gaafu Alif | Raa | 15 | |
Gaafu Alif | Baa | 33 | |
Gaafu Alif | Lhaviyani | 15 | |
Gaafu Alif | Kaafu | 169 | |
Gaafu Alif | Alifu Alifu | 21 | |
Gaafu Alif | Alifu Dhaalu | 27 | |
Gaafu Alif | Vaavu | 4 | |
Gaafu Alif | Meemu | 9 | |
Gaafu Alif | Faafu | 13 | |
Gaafu Alif | Dhaal | 19 | |
Gaafu Alif | Thaa | 9 | |
Gaafu Alif | Laamu | 26 | |
Gaafu Alif | Gaafu Alif | 7904 | |
Gaafu Alif | Gaaf Dhaalu | 126 | |
Gaafu Alif | Gnaviyani | 24 | |
Gaafu Alif | Seenu | 76 | |
Gaaf Dhaalu | Malé | 6828 | |
Gaaf Dhaalu | Haa Alifu | 21 | |
Gaaf Dhaalu | Haa Dhaalu | 37 | |
Gaaf Dhaalu | Shaviyani | 26 | |
Gaaf Dhaalu | Noonu | 37 | |
Gaaf Dhaalu | Raa | 32 | |
Gaaf Dhaalu | Baa | 66 | |
Gaaf Dhaalu | Lhaviyani | 41 | |
Gaaf Dhaalu | Kaafu | 329 | |
Gaaf Dhaalu | Alifu Alifu | 46 | |
Gaaf Dhaalu | Alifu Dhaalu | 79 | |
Gaaf Dhaalu | Vaavu | 10 | |
Gaaf Dhaalu | Meemu | 23 | |
Gaaf Dhaalu | Faafu | 20 | |
Gaaf Dhaalu | Dhaal | 36 | |
Gaaf Dhaalu | Thaa | 33 | |
Gaaf Dhaalu | Laamu | 53 | |
Gaaf Dhaalu | Gaafu Alif | 244 | |
Gaaf Dhaalu | Gaaf Dhaalu | 10869 | |
Gaaf Dhaalu | Gnaviyani | 54 | |
Gaaf Dhaalu | Seenu | 139 | |
Gnaviyani | Malé | 2330 | |
Gnaviyani | Haa Alifu | 26 | |
Gnaviyani | Haa Dhaalu | 15 | |
Gnaviyani | Shaviyani | 6 | |
Gnaviyani | Noonu | 38 | |
Gnaviyani | Raa | 9 | |
Gnaviyani | Baa | 81 | |
Gnaviyani | Lhaviyani | 24 | |
Gnaviyani | Kaafu | 485 | |
Gnaviyani | Alifu Alifu | 56 | |
Gnaviyani | Alifu Dhaalu | 160 | |
Gnaviyani | Vaavu | 5 | |
Gnaviyani | Meemu | 13 | |
Gnaviyani | Faafu | 6 | |
Gnaviyani | Dhaal | 39 | |
Gnaviyani | Thaa | 17 | |
Gnaviyani | Laamu | 20 | |
Gnaviyani | Gaafu Alif | 74 | |
Gnaviyani | Gaaf Dhaalu | 71 | |
Gnaviyani | Gnaviyani | 7575 | |
Gnaviyani | Seenu | 153 | |
Seenu | Malé | 8302 | |
Seenu | Haa Alifu | 42 | |
Seenu | Haa Dhaalu | 41 | |
Seenu | Shaviyani | 19 | |
Seenu | Noonu | 79 | |
Seenu | Raa | 49 | |
Seenu | Baa | 159 | |
Seenu | Lhaviyani | 66 | |
Seenu | Kaafu | 1190 | |
Seenu | Alifu Alifu | 177 | |
Seenu | Alifu Dhaalu | 303 | |
Seenu | Vaavu | 14 | |
Seenu | Meemu | 22 | |
Seenu | Faafu | 19 | |
Seenu | Dhaal | 105 | |
Seenu | Thaa | 44 | |
Seenu | Laamu | 57 | |
Seenu | Gaafu Alif | 118 | |
Seenu | Gaaf Dhaalu | 126 | |
Seenu | Gnaviyani | 111 | |
Seenu | Seenu | 18290 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
source | target | value | |
---|---|---|---|
Malé | Malé | 54207 | |
Haa Alifu | Malé | 5628 | |
Haa Dhaalu | Malé | 4582 | |
Shaviyani | Malé | 3077 | |
Noonu | Malé | 3472 | |
Raa | Malé | 4842 | |
Baa | Malé | 3673 | |
Lhaviyani | Malé | 3228 | |
Kaafu | Malé | 2153 | |
Alifu Alifu | Malé | 1485 | |
Alifu Dhaalu | Malé | 1799 | |
Vaavu | Malé | 776 | |
Meemu | Malé | 1857 | |
Faafu | Malé | 1092 | |
Dhaal | Malé | 1627 | |
Thaa | Malé | 5014 | |
Laamu | Malé | 3160 | |
Gaafu Alif | Malé | 4413 | |
Gaaf Dhaalu | Malé | 6828 | |
Gnaviyani | Malé | 2330 | |
Seenu | Malé | 8302 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
source | target | value | |
---|---|---|---|
Haa Alifu | Haa Alifu | 12796 | |
Haa Alifu | Haa Dhaalu | 223 | |
Haa Alifu | Shaviyani | 28 | |
Haa Alifu | Noonu | 76 | |
Haa Alifu | Raa | 55 | |
Haa Alifu | Baa | 77 | |
Haa Alifu | Lhaviyani | 73 | |
Haa Alifu | Kaafu | 732 | |
Haa Alifu | Alifu Alifu | 112 | |
Haa Alifu | Alifu Dhaalu | 212 | |
Haa Alifu | Vaavu | 7 | |
Haa Alifu | Meemu | 30 | |
Haa Alifu | Faafu | 11 | |
Haa Alifu | Dhaal | 63 | |
Haa Alifu | Thaa | 29 | |
Haa Alifu | Laamu | 24 | |
Haa Alifu | Gaafu Alif | 25 | |
Haa Alifu | Gaaf Dhaalu | 27 | |
Haa Alifu | Gnaviyani | 9 | |
Haa Alifu | Seenu | 40 | |
Haa Dhaalu | Haa Alifu | 197 | |
Haa Dhaalu | Haa Dhaalu | 17530 | |
Haa Dhaalu | Shaviyani | 99 | |
Haa Dhaalu | Noonu | 66 | |
Haa Dhaalu | Raa | 55 | |
Haa Dhaalu | Baa | 99 | |
Haa Dhaalu | Lhaviyani | 47 | |
Haa Dhaalu | Kaafu | 948 | |
Haa Dhaalu | Alifu Alifu | 202 | |
Haa Dhaalu | Alifu Dhaalu | 208 | |
Haa Dhaalu | Vaavu | 11 | |
Haa Dhaalu | Meemu | 37 | |
Haa Dhaalu | Faafu | 7 | |
Haa Dhaalu | Dhaal | 52 | |
Haa Dhaalu | Thaa | 22 | |
Haa Dhaalu | Laamu | 31 | |
Haa Dhaalu | Gaafu Alif | 29 | |
Haa Dhaalu | Gaaf Dhaalu | 31 | |
Haa Dhaalu | Gnaviyani | 31 | |
Haa Dhaalu | Seenu | 30 | |
Shaviyani | Haa Alifu | 37 | |
Shaviyani | Haa Dhaalu | 127 | |
Shaviyani | Shaviyani | 11911 | |
Shaviyani | Noonu | 101 | |
Shaviyani | Raa | 53 | |
Shaviyani | Baa | 100 | |
Shaviyani | Lhaviyani | 89 | |
Shaviyani | Kaafu | 403 | |
Shaviyani | Alifu Alifu | 70 | |
Shaviyani | Alifu Dhaalu | 139 | |
Shaviyani | Vaavu | 13 | |
Shaviyani | Meemu | 14 | |
Shaviyani | Faafu | 5 | |
Shaviyani | Dhaal | 43 | |
Shaviyani | Thaa | 12 | |
Shaviyani | Laamu | 22 | |
Shaviyani | Gaafu Alif | 21 | |
Shaviyani | Gaaf Dhaalu | 8 | |
Shaviyani | Gnaviyani | 10 | |
Shaviyani | Seenu | 21 | |
Noonu | Haa Alifu | 50 | |
Noonu | Haa Dhaalu | 49 | |
Noonu | Shaviyani | 52 | |
Noonu | Noonu | 10280 | |
Noonu | Raa | 65 | |
Noonu | Baa | 79 | |
Noonu | Lhaviyani | 272 | |
Noonu | Kaafu | 411 | |
Noonu | Alifu Alifu | 43 | |
Noonu | Alifu Dhaalu | 137 | |
Noonu | Vaavu | 8 | |
Noonu | Meemu | 21 | |
Noonu | Faafu | 1 | |
Noonu | Dhaal | 31 | |
Noonu | Thaa | 20 | |
Noonu | Laamu | 32 | |
Noonu | Gaafu Alif | 15 | |
Noonu | Gaaf Dhaalu | 21 | |
Noonu | Gnaviyani | 6 | |
Noonu | Seenu | 18 | |
Raa | Haa Alifu | 43 | |
Raa | Haa Dhaalu | 52 | |
Raa | Shaviyani | 92 | |
Raa | Noonu | 84 | |
Raa | Raa | 14694 | |
Raa | Baa | 200 | |
Raa | Lhaviyani | 134 | |
Raa | Kaafu | 391 | |
Raa | Alifu Alifu | 81 | |
Raa | Alifu Dhaalu | 103 | |
Raa | Vaavu | 19 | |
Raa | Meemu | 16 | |
Raa | Faafu | 12 | |
Raa | Dhaal | 40 | |
Raa | Thaa | 31 | |
Raa | Laamu | 20 | |
Raa | Gaafu Alif | 22 | |
Raa | Gaaf Dhaalu | 7 | |
Raa | Gnaviyani | 12 | |
Raa | Seenu | 29 | |
Baa | Haa Alifu | 19 | |
Baa | Haa Dhaalu | 32 | |
Baa | Shaviyani | 30 | |
Baa | Noonu | 29 | |
Baa | Raa | 48 | |
Baa | Baa | 8690 | |
Baa | Lhaviyani | 34 | |
Baa | Kaafu | 274 | |
Baa | Alifu Alifu | 66 | |
Baa | Alifu Dhaalu | 79 | |
Baa | Vaavu | 6 | |
Baa | Meemu | 15 | |
Baa | Faafu | 19 | |
Baa | Dhaal | 17 | |
Baa | Thaa | 14 | |
Baa | Laamu | 19 | |
Baa | Gaafu Alif | 13 | |
Baa | Gaaf Dhaalu | 22 | |
Baa | Gnaviyani | 11 | |
Baa | Seenu | 26 | |
Lhaviyani | Haa Alifu | 27 | |
Lhaviyani | Haa Dhaalu | 37 | |
Lhaviyani | Shaviyani | 34 | |
Lhaviyani | Noonu | 117 | |
Lhaviyani | Raa | 43 | |
Lhaviyani | Baa | 83 | |
Lhaviyani | Lhaviyani | 7624 | |
Lhaviyani | Kaafu | 348 | |
Lhaviyani | Alifu Alifu | 44 | |
Lhaviyani | Alifu Dhaalu | 95 | |
Lhaviyani | Vaavu | 8 | |
Lhaviyani | Meemu | 10 | |
Lhaviyani | Faafu | 9 | |
Lhaviyani | Dhaal | 18 | |
Lhaviyani | Thaa | 20 | |
Lhaviyani | Laamu | 22 | |
Lhaviyani | Gaafu Alif | 20 | |
Lhaviyani | Gaaf Dhaalu | 27 | |
Lhaviyani | Gnaviyani | 13 | |
Lhaviyani | Seenu | 20 | |
Kaafu | Haa Alifu | 26 | |
Kaafu | Haa Dhaalu | 18 | |
Kaafu | Shaviyani | 19 | |
Kaafu | Noonu | 25 | |
Kaafu | Raa | 28 | |
Kaafu | Baa | 46 | |
Kaafu | Lhaviyani | 36 | |
Kaafu | Kaafu | 9612 | |
Kaafu | Alifu Alifu | 31 | |
Kaafu | Alifu Dhaalu | 67 | |
Kaafu | Vaavu | 4 | |
Kaafu | Meemu | 14 | |
Kaafu | Faafu | 20 | |
Kaafu | Dhaal | 23 | |
Kaafu | Thaa | 15 | |
Kaafu | Laamu | 18 | |
Kaafu | Gaafu Alif | 26 | |
Kaafu | Gaaf Dhaalu | 21 | |
Kaafu | Gnaviyani | 8 | |
Kaafu | Seenu | 24 | |
Alifu Alifu | Haa Alifu | 8 | |
Alifu Alifu | Haa Dhaalu | 8 | |
Alifu Alifu | Shaviyani | 11 | |
Alifu Alifu | Noonu | 14 | |
Alifu Alifu | Raa | 10 | |
Alifu Alifu | Baa | 23 | |
Alifu Alifu | Lhaviyani | 22 | |
Alifu Alifu | Kaafu | 92 | |
Alifu Alifu | Alifu Alifu | 5424 | |
Alifu Alifu | Alifu Dhaalu | 64 | |
Alifu Alifu | Vaavu | 1 | |
Alifu Alifu | Meemu | 8 | |
Alifu Alifu | Faafu | 8 | |
Alifu Alifu | Dhaal | 6 | |
Alifu Alifu | Thaa | 6 | |
Alifu Alifu | Laamu | 9 | |
Alifu Alifu | Gaafu Alif | 3 | |
Alifu Alifu | Gaaf Dhaalu | 4 | |
Alifu Alifu | Gnaviyani | 6 | |
Alifu Alifu | Seenu | 29 | |
Alifu Dhaalu | Haa Alifu | 15 | |
Alifu Dhaalu | Haa Dhaalu | 25 | |
Alifu Dhaalu | Shaviyani | 11 | |
Alifu Dhaalu | Noonu | 8 | |
Alifu Dhaalu | Raa | 11 | |
Alifu Dhaalu | Baa | 19 | |
Alifu Dhaalu | Lhaviyani | 9 | |
Alifu Dhaalu | Kaafu | 118 | |
Alifu Dhaalu | Alifu Alifu | 96 | |
Alifu Dhaalu | Alifu Dhaalu | 7861 | |
Alifu Dhaalu | Vaavu | 9 | |
Alifu Dhaalu | Meemu | 12 | |
Alifu Dhaalu | Faafu | 13 | |
Alifu Dhaalu | Dhaal | 14 | |
Alifu Dhaalu | Thaa | 5 | |
Alifu Dhaalu | Laamu | 15 | |
Alifu Dhaalu | Gaafu Alif | 6 | |
Alifu Dhaalu | Gaaf Dhaalu | 12 | |
Alifu Dhaalu | Gnaviyani | 1 | |
Alifu Dhaalu | Seenu | 15 | |
Vaavu | Haa Alifu | 7 | |
Vaavu | Haa Dhaalu | 5 | |
Vaavu | Shaviyani | 1 | |
Vaavu | Noonu | 11 | |
Vaavu | Raa | 9 | |
Vaavu | Baa | 13 | |
Vaavu | Lhaviyani | 3 | |
Vaavu | Kaafu | 63 | |
Vaavu | Alifu Alifu | 15 | |
Vaavu | Alifu Dhaalu | 35 | |
Vaavu | Vaavu | 1406 | |
Vaavu | Meemu | 14 | |
Vaavu | Faafu | 2 | |
Vaavu | Dhaal | 5 | |
Vaavu | Thaa | 14 | |
Vaavu | Laamu | 1 | |
Vaavu | Gaafu Alif | 0 | |
Vaavu | Gaaf Dhaalu | 2 | |
Vaavu | Gnaviyani | 0 | |
Vaavu | Seenu | 2 | |
Meemu | Haa Alifu | 5 | |
Meemu | Haa Dhaalu | 18 | |
Meemu | Shaviyani | 7 | |
Meemu | Noonu | 26 | |
Meemu | Raa | 16 | |
Meemu | Baa | 14 | |
Meemu | Lhaviyani | 11 | |
Meemu | Kaafu | 125 | |
Meemu | Alifu Alifu | 31 | |
Meemu | Alifu Dhaalu | 67 | |
Meemu | Vaavu | 5 | |
Meemu | Meemu | 4486 | |
Meemu | Faafu | 11 | |
Meemu | Dhaal | 46 | |
Meemu | Thaa | 24 | |
Meemu | Laamu | 13 | |
Meemu | Gaafu Alif | 12 | |
Meemu | Gaaf Dhaalu | 11 | |
Meemu | Gnaviyani | 1 | |
Meemu | Seenu | 15 | |
Faafu | Haa Alifu | 4 | |
Faafu | Haa Dhaalu | 6 | |
Faafu | Shaviyani | 6 | |
Faafu | Noonu | 3 | |
Faafu | Raa | 4 | |
Faafu | Baa | 9 | |
Faafu | Lhaviyani | 6 | |
Faafu | Kaafu | 55 | |
Faafu | Alifu Alifu | 17 | |
Faafu | Alifu Dhaalu | 31 | |
Faafu | Vaavu | 5 | |
Faafu | Meemu | 16 | |
Faafu | Faafu | 3910 | |
Faafu | Dhaal | 41 | |
Faafu | Thaa | 7 | |
Faafu | Laamu | 10 | |
Faafu | Gaafu Alif | 6 | |
Faafu | Gaaf Dhaalu | 16 | |
Faafu | Gnaviyani | 3 | |
Faafu | Seenu | 11 | |
Dhaal | Haa Alifu | 14 | |
Dhaal | Haa Dhaalu | 13 | |
Dhaal | Shaviyani | 6 | |
Dhaal | Noonu | 7 | |
Dhaal | Raa | 6 | |
Dhaal | Baa | 7 | |
Dhaal | Lhaviyani | 0 | |
Dhaal | Kaafu | 117 | |
Dhaal | Alifu Alifu | 11 | |
Dhaal | Alifu Dhaalu | 43 | |
Dhaal | Vaavu | 2 | |
Dhaal | Meemu | 24 | |
Dhaal | Faafu | 17 | |
Dhaal | Dhaal | 5141 | |
Dhaal | Thaa | 17 | |
Dhaal | Laamu | 23 | |
Dhaal | Gaafu Alif | 7 | |
Dhaal | Gaaf Dhaalu | 15 | |
Dhaal | Gnaviyani | 4 | |
Dhaal | Seenu | 15 | |
Thaa | Haa Alifu | 22 | |
Thaa | Haa Dhaalu | 26 | |
Thaa | Shaviyani | 18 | |
Thaa | Noonu | 32 | |
Thaa | Raa | 27 | |
Thaa | Baa | 30 | |
Thaa | Lhaviyani | 15 | |
Thaa | Kaafu | 229 | |
Thaa | Alifu Alifu | 20 | |
Thaa | Alifu Dhaalu | 60 | |
Thaa | Vaavu | 5 | |
Thaa | Meemu | 18 | |
Thaa | Faafu | 11 | |
Thaa | Dhaal | 47 | |
Thaa | Thaa | 8487 | |
Thaa | Laamu | 86 | |
Thaa | Gaafu Alif | 19 | |
Thaa | Gaaf Dhaalu | 20 | |
Thaa | Gnaviyani | 8 | |
Thaa | Seenu | 23 | |
Laamu | Haa Alifu | 26 | |
Laamu | Haa Dhaalu | 22 | |
Laamu | Shaviyani | 14 | |
Laamu | Noonu | 27 | |
Laamu | Raa | 15 | |
Laamu | Baa | 50 | |
Laamu | Lhaviyani | 24 | |
Laamu | Kaafu | 233 | |
Laamu | Alifu Alifu | 37 | |
Laamu | Alifu Dhaalu | 79 | |
Laamu | Vaavu | 12 | |
Laamu | Meemu | 38 | |
Laamu | Faafu | 13 | |
Laamu | Dhaal | 58 | |
Laamu | Thaa | 125 | |
Laamu | Laamu | 11380 | |
Laamu | Gaafu Alif | 47 | |
Laamu | Gaaf Dhaalu | 34 | |
Laamu | Gnaviyani | 18 | |
Laamu | Seenu | 33 | |
Gaafu Alif | Haa Alifu | 14 | |
Gaafu Alif | Haa Dhaalu | 9 | |
Gaafu Alif | Shaviyani | 12 | |
Gaafu Alif | Noonu | 18 | |
Gaafu Alif | Raa | 15 | |
Gaafu Alif | Baa | 33 | |
Gaafu Alif | Lhaviyani | 15 | |
Gaafu Alif | Kaafu | 169 | |
Gaafu Alif | Alifu Alifu | 21 | |
Gaafu Alif | Alifu Dhaalu | 27 | |
Gaafu Alif | Vaavu | 4 | |
Gaafu Alif | Meemu | 9 | |
Gaafu Alif | Faafu | 13 | |
Gaafu Alif | Dhaal | 19 | |
Gaafu Alif | Thaa | 9 | |
Gaafu Alif | Laamu | 26 | |
Gaafu Alif | Gaafu Alif | 7904 | |
Gaafu Alif | Gaaf Dhaalu | 126 | |
Gaafu Alif | Gnaviyani | 24 | |
Gaafu Alif | Seenu | 76 | |
Gaaf Dhaalu | Haa Alifu | 21 | |
Gaaf Dhaalu | Haa Dhaalu | 37 | |
Gaaf Dhaalu | Shaviyani | 26 | |
Gaaf Dhaalu | Noonu | 37 | |
Gaaf Dhaalu | Raa | 32 | |
Gaaf Dhaalu | Baa | 66 | |
Gaaf Dhaalu | Lhaviyani | 41 | |
Gaaf Dhaalu | Kaafu | 329 | |
Gaaf Dhaalu | Alifu Alifu | 46 | |
Gaaf Dhaalu | Alifu Dhaalu | 79 | |
Gaaf Dhaalu | Vaavu | 10 | |
Gaaf Dhaalu | Meemu | 23 | |
Gaaf Dhaalu | Faafu | 20 | |
Gaaf Dhaalu | Dhaal | 36 | |
Gaaf Dhaalu | Thaa | 33 | |
Gaaf Dhaalu | Laamu | 53 | |
Gaaf Dhaalu | Gaafu Alif | 244 | |
Gaaf Dhaalu | Gaaf Dhaalu | 10869 | |
Gaaf Dhaalu | Gnaviyani | 54 | |
Gaaf Dhaalu | Seenu | 139 | |
Gnaviyani | Haa Alifu | 26 | |
Gnaviyani | Haa Dhaalu | 15 | |
Gnaviyani | Shaviyani | 6 | |
Gnaviyani | Noonu | 38 | |
Gnaviyani | Raa | 9 | |
Gnaviyani | Baa | 81 | |
Gnaviyani | Lhaviyani | 24 | |
Gnaviyani | Kaafu | 485 | |
Gnaviyani | Alifu Alifu | 56 | |
Gnaviyani | Alifu Dhaalu | 160 | |
Gnaviyani | Vaavu | 5 | |
Gnaviyani | Meemu | 13 | |
Gnaviyani | Faafu | 6 | |
Gnaviyani | Dhaal | 39 | |
Gnaviyani | Thaa | 17 | |
Gnaviyani | Laamu | 20 | |
Gnaviyani | Gaafu Alif | 74 | |
Gnaviyani | Gaaf Dhaalu | 71 | |
Gnaviyani | Gnaviyani | 7575 | |
Gnaviyani | Seenu | 153 | |
Seenu | Haa Alifu | 42 | |
Seenu | Haa Dhaalu | 41 | |
Seenu | Shaviyani | 19 | |
Seenu | Noonu | 79 | |
Seenu | Raa | 49 | |
Seenu | Baa | 159 | |
Seenu | Lhaviyani | 66 | |
Seenu | Kaafu | 1190 | |
Seenu | Alifu Alifu | 177 | |
Seenu | Alifu Dhaalu | 303 | |
Seenu | Vaavu | 14 | |
Seenu | Meemu | 22 | |
Seenu | Faafu | 19 | |
Seenu | Dhaal | 105 | |
Seenu | Thaa | 44 | |
Seenu | Laamu | 57 | |
Seenu | Gaafu Alif | 118 | |
Seenu | Gaaf Dhaalu | 126 | |
Seenu | Gnaviyani | 111 | |
Seenu | Seenu | 18290 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment