Skip to content

Instantly share code, notes, and snippets.

@javisantana
Created December 18, 2014 12:10
Show Gist options
  • Save javisantana/5b8ffcef3f6f3c12207b to your computer and use it in GitHub Desktop.
Save javisantana/5b8ffcef3f6f3c12207b to your computer and use it in GitHub Desktop.
cartodb tooltip with createLayer
<!DOCTYPE html>
<html>
<head>
<title>Leaflet example | CartoDB.js</title>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<link rel="shortcut icon" href="http://cartodb.com/assets/favicon.ico" />
<style>
html, body, #map {
height: 100%;
padding: 0;
margin: 0;
}
</style>
<link rel="stylesheet" href="http://libs.cartocdn.com/cartodb.js/v3/3.11/themes/css/cartodb.css" />
</head>
<body>
<div id="map"></div>
<!-- include cartodb.js library -->
<script src="http://libs.cartocdn.com/cartodb.js/v3/3.11/cartodb.js"></script>
<script>
function main() {
var map = new L.Map('map', {
zoomControl: false,
center: [43, 0],
zoom: 3
});
L.tileLayer('http://tile.stamen.com/toner/{z}/{x}/{y}.png', {
attribution: 'Stamen'
}).addTo(map);
cartodb.createLayer(map, 'http://documentation.cartodb.com/api/v2/viz/2b13c956-e7c1-11e2-806b-5404a6a683d5/viz.json')
.addTo(map)
.on('done', function(layer) {
var sublayer = layer.getSubLayer(0);
sublayer.set({ 'interactivity': ['cartodb_id', 'name'] });
var i = new cdb.geo.ui.Tooltip({
layer: layer,
template: '<div class="cartodb-tooltip-content-wrapper"> <div class="cartodb-tooltip-content"><h3>{{name}}</h3><p>more info</p></div></div>',
width: 200,
position: 'bottom|right'
});
$('body').append(i.render().el);
}).on('error', function() {
cartodb.log.log("some error occurred");
});
}
// you could use $(window).load(main);
window.onload = main;
</script>
</body>
</html>
@alasarr
Copy link

alasarr commented Jun 8, 2015

I got the following exception with version 3.14:
Uncaught Error: mapView should be present

@alasarr
Copy link

alasarr commented Jun 8, 2015

On the other hand, with version 3.11, I'm trying using layer metadata instead of viz.json url but It doesn't work.

function main() {
         var map = new L.Map('map', {
            zoomControl: true,
            center: [39.90,-4.72],
            zoom: 7
        });

         L.tileLayer('http://{s}.api.cartocdn.com/base-dark/{z}/{x}/{y}.png', {}).addTo(map);

        var cartocss = [ '#user_registrations{',
                        'marker-fill: #FFCC00;', 
                        'marker-width: 6;',
                        'marker-line-color: #FFF;',
                        'marker-line-width: 0.5;',
                        'marker-line-opacity: 0.3;', 
                        'marker-fill-opacity: 0.8;',
                        'marker-comp-op: multiply;',
                        'marker-type: ellipse;',
                        'marker-placement: point;', 
                        'marker-allow-overlap: true;', 
                        'marker-clip: false;',
                        'marker-multi-policy: largest;',
                        '}'].join('\n');

        var query = 'SELECT * FROM user_registrations WHERE date_registered>=\'2015-06-01\' AND date_registered<=\'2015-06-08\'';

        cartodb.createLayer(map,{
            user_name : 'alasarr',
            type: 'cartodb',
            sublayers : [{
                sql : query,
                cartocss : cartocss,
                interactivity: 'cartodb_id,name'
            }]
        })
        .addTo(map)
        .on('done', function(layer) {
            // var sublayer = layer.getSubLayer(0);
            // sublayer.set({ 'interactivity': ['cartodb_id', 'name'] });
            //cartodb.vis.Vis.addInfowindow(map, layer.getSubLayer(0), ['name'])
            var i = new cdb.geo.ui.Tooltip({
                layer: layer,
                template: '<div class="cartodb-tooltip-content-wrapper"> <div class="cartodb-tooltip-content"><h3>{{name}}</h3><p>more info</p></div></div>', 
                width: 200,
                position: 'bottom|right'
            });
            $('body').append(i.render().el);
        });
}

Do you know what is wrong? Thanks in advance

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment