Custom Popup

Defining custom HTML for popups from marker properties
Select all
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>Custom Popup</title>
  
  <meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no' />
  <script src='//api.tiles.mapbox.com/mapbox.js/v1.5.0/mapbox.js'></script>
  <link href='//api.tiles.mapbox.com/mapbox.js/v1.5.0/mapbox.css' rel='stylesheet' />
  
  <style>
    body { margin:0; padding:0; }
    #map { position:absolute; top:0; bottom:0; width:100%; }
  </style>
</head>
<body>
<div id='map'></div>
<script>
var map = L.mapbox.map('map', 'examples.map-9ijuk24y')
    .setView([0, 0], 9);

var markerLayer = L.mapbox.markerLayer({
        type: 'FeatureCollection',
        features: [{
            type: 'Feature',
            properties: {
                size: 5,
                population: 10
            },
            geometry: {
                type: 'Point',
                coordinates: [0, 0]
            }
        }]
    })
    .addTo(map);

// note that calling `.eachLayer` here depends on setting GeoJSON _directly_
// above. If you're loading GeoJSON asynchronously, like from CSV or from a file,
// you will need to do this within a `markerLayer.on('ready'` event

markerLayer.eachLayer(function(layer) {

    // here you call `bindPopup` with a string of HTML you create - the feature
    // properties declared above are available under `layer.feature.properties`

    var content = '<h1>size: ' + layer.feature.properties.size + '<\/h1>' +
        '<h2>population: ' + layer.feature.properties.population + '<\/h2>';
    layer.bindPopup(content);
});
</script>
The code and documentation to mapbox.js is hosted on GitHub where you can contribute changes and improvements.