Last active
August 29, 2015 14:10
-
-
Save xavijam/5dce2d446cf96e5054b8 to your computer and use it in GitHub Desktop.
Displaying infowindow when ajax request is done
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 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