Skip to content

Instantly share code, notes, and snippets.

@xavijam
Last active August 29, 2015 14:10
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save xavijam/5dce2d446cf96e5054b8 to your computer and use it in GitHub Desktop.
Save xavijam/5dce2d446cf96e5054b8 to your computer and use it in GitHub Desktop.
Displaying infowindow when ajax request is done
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" href="http://libs.cartodb.com/cartodb.js/v3/3.11/themes/css/cartodb.css" />
<script src="http://libs.cartocdn.com/cartodb.js/v3/3.11/cartodb.js"></script>
<style type="text/css">
html, body, #map {
height:100%;
padding: 0;
margin: 0;
}
</style>
</head>
<body onload="main();">
<div id="map"></div>
<script type="infowindow/html" id="infowindow_template">
<div class="cartodb-popup v2" id="infowindow_view">
<a href="#close" class="cartodb-popup-close-button close">x</a>
<div class="cartodb-popup-content-wrapper">
<div class="cartodb-popup-content">
<h3>Custom infowindow</h3>
<% for (var i in content.data[0]) { %>
<h4><%= i %></h4>
<p><%= content.data[0][i] %></p>
<% } %>
</div>
</div>
<div class="cartodb-popup-tip-container"></div>
</div>
</script>
<script type="text/javascript">
function main() {
var sql = new cartodb.SQL({ user: 'xavijam' });
cartodb.createVis('map', 'http://team.cartodb.com/api/v2/viz/bb5806ea-1735-11e4-a068-0e230854a1cb/viz.json')
.on('done', function(vis,layers) {
var layer = layers[1];
var infowindow_model = layer.infowindow;
// Disabling layer click binding
layer.unbind('featureClick');
// Create custom layer featureClick binding
layer.bind('featureClick', function(ev, latlng, pos, data, layerIndex) {
console.log("infowindow hidden, loading query...");
// Hide infowindow from the beginning
infowindow_model.set('visibility', false);
// Simulating an ajax call doing a sql request
sql.execute("SELECT cartodb_id, iso2, iso3, name, area FROM tm_world_borders_simpl_0_3 WHERE cartodb_id = {{id}}", { id: 6 })
.done(function(data) {
console.log("Query loaded, infowindow displayed");
// Set infowindow position, template, content and visibility
infowindow_model.set({
latlng: latlng,
content: {
fields: [{
title: false,
value: 'test',
index: '0',
}],
data: data.rows
},
visibility: true
});
});
});
infowindow_model.set('template_type', 'underscore');
infowindow_model.set('template', $('#infowindow_template').html());
});
}
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment