d3.cartodb was an experiment to render CARTO visualizations using d3.
Check https://github.com/cartodb/tangram.cartodb for an alternative for CARTO vector rendering.
Client-side rendering of CartoDB visualisations with d3
License: BSD 3-Clause "New" or "Revised" License
d3.cartodb was an experiment to render CARTO visualizations using d3.
Check https://github.com/cartodb/tangram.cartodb for an alternative for CARTO vector rendering.
So that we can load layers according to vizjsons.
http://cartodb.github.io/d3.cartodb/test.html
With initial zoom level:
After zooming in:
Notice the Uncaught TypeError: f.on is not a function error too.
Like we do in Torque, with an error()
callback function.
At the moment tile boundaries are noticeable with point datasets.
Right now it's being globally set via the path.
At the moment tests are being run using the bundled library generated in ./dist/
. This means running make
after every change in the source while adding/editing tests. It'd be better to use the src files directly.
There was a similar issue in Torque. It was corrected here: CartoDB/torque#84
setSQL was part of the API before the refactor into a Leaflet layer. We should probably restore it to manipulate the query.
Right now they're testing elements related to the SQL provider, which we're not really using anymore.
I'm getting the following error:
Uncaught TypeError: Cannot set property 'tilePoint' of undefined
On this line.
For some reason, f.properties
is undefined on some cases. Example (using the populated places dataset):
{
"scalerank": "6",
"natscale": "30",
"labelrank": "8",
"featurecla": "Populated place",
"name": "Nord",
"namepar": "",
"namealt": "",
"diffascii": "0",
"nameascii": "Nord",
"adm0cap": "0",
"capalt": "0",
"capin": "",
"worldcity": "0",
"megacity": "0",
"sov0name": "Denmark",
"sov_a3": "DNK",
"adm0name": "Greenland",
"adm0_a3": "GRL",
"adm1name": "Nationalparken",
"iso_a2": "GL",
"note": "",
"latitude": "81.7166257927",
"longitude": "-17.8000352391",
"changed": "1",
"namediff": "1",
"diffnote": "Added place.",
"pop_max": "10",
"pop_min": "10",
"pop_other": "0",
"rank_max": "1",
"rank_min": "1",
"geonameid": "-1",
"meganame": "",
"ls_name": "",
"ls_match": "2",
"checkme": "0",
"cartodb_id": 5370,
"created_at": "2014-10-19 00:00:00+00",
"updated_at": "2014-10-19 00:00:00+00",
"tilePoint": "2:1:0"
}
At the moment it is only starting their load once the mouse is released.
But just modify the style applied to them
At some point during these improvements/refactors I broke conditional styling. Fix it.
see #1
When scrolling very quickly there must be some race condition causing the tiles to render their features in the wrong place.
Sort of what we have at the moment at the Windshaft provider. We need the ability to set the url template at any point, regardless of its state.
Right now tiles disappear when zooming, to reappear when their loading is complete. Is it possible to do some sort of overzooming as the view zooms/the tiles are not loaded?
That is, obtain a layergroup and use the resulting URL. This logic can be pretty much copied wholly from Torque.
At the moment we're passing over the whole options object from the layer
Since we're now using tiles instead of querying the whole dataset, it seems logic to stop projecting geometries and worry about positions at a tile level, and using TopoJSON makes a lot of sense for this. The procedure would be to keep receiving geojson from the server and convert each tile on the client with mbostock/topojson.
Blocked by:
As a user of the L.CartoDBd3Layer I want to able to:
Get notified when the features have been loaded or have changed (eg: initially, when the URL has been updated, or every time a filter has been applied).
layer.bind('featuresChanged, function (features) {
// I can work with the features
});
Have a way to check if features have been loaded and be able to extract the features that have been previously loaded.
if (layer.featuresLoaded()) {
var features = layer.getFeatures();
// use the features to get a list of categories, calculate the result of a formula, etc.
)} else {
// wait until features have been loaded/changed
layer.bind('featuresChanged', function () {
...
});
}
@fdansv @rochoa @javisantana what do you guys think?
We need to review what we should export. In other words: what the public API must be.
Use a more consistent code style:
In the long term this problem may be solving by stitching geometries, but for now it makes sense just to hash repeated features.
cc @javisantana
Use require to use other libraries/components:
Right now the render
method in src/renderer.js
is about 130 lines long, and it contains way too much stuff. It should be refactored.
xyz.js and windshaft.js have a lot of repeated logic. A few methods should be directly inherited from a base provider.
Need to discuss this with @alonsogarciapablo
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.