# cesium-cartodb
**Repository Path**: cofferlait/cesium-cartodb
## Basic Information
- **Project Name**: cesium-cartodb
- **Description**: No description available
- **Primary Language**: JavaScript
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2019-02-24
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# CartoDB integration for Cesium
This plugin helps integrate [CartoDB](http://cartodb.com) maps and data layers into [Cesium](http://cesiumjs.org).
## Server-side layer integration
CartoDB's server-side layers include basemaps and data layers generated in the server. For this, the pluging adds a new imagery provider to Cesium, `CartoDBImageryProvider`.
### Installation
You can use `.../src/cesium-cartodb.js` as is or run `grunt build` to get a minified version `.../build/cesium-cartodb.min.js`. You must include either after including Cesium in your html.
```html
```
### Usage
After this, you can create new imagery objects in Cesium and use them as needed. `CartoDBImageryProvider` is derived from [Cesium's OpenStreetMap imagery provider](http://cesiumjs.org/Cesium/Build/Documentation/OpenStreetMapImageryProvider.html), and can be initialized and used just the same.
#### Basemap layer
Just add a `CartoDBImageryProvider` instance to a viewer in order to use CartoDB's basemaps in Cesium.
```js
var basemapProvider = new Cesium.CartoDBImageryProvider({
url: '', // e.g.: http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png,
credit: 'Basemap courtesy of CartoDB'
});
var viewer = new Cesium.Viewer('cesiumContainer', {
imageryProvider: basemapProvider,
baseLayerPicker: false,
fullscreenButton: false,
homeButton: false,
timeline: false,
navigationHelpButton: false,
animation: false,
scene3DOnly: true,
geocoder: false
});
```
#### Data layer
In order to have a data layer from tiles generated in CartoDB, use cartodb.core.js's getTiles to inject the tiles in Cesium.
```js
var layerData = {
user_name: '",
cartocss: ''
}]
};
cartodb.Tiles.getTiles(layerData, function (tiles, err) {
if (tiles == null) {
console.log("error: ", err.errors.join('\n'));
return;
}
viewer.scene.imageryLayers.addImageryProvider(new Cesium.CartoDBImageryProvider({
url: tiles.tiles[0],
credit: 'Data courtesy of CartoDB'
}));
});
```
## Client-side data layer
You can use CartoDB's SQL API to use data in CartoDB with Cesium renderers. You only need to make user data is in geoJSON format.
```js
var dataSource = new Cesium.GeoJsonDataSource();
viewer.dataSources.add(dataSource);
var sql = new cartodb.SQL({user: '', format: 'geoJSON'});
sql.execute("SQL_QUERY")
.done(function (data) {
dataSource.load(data)
.then(function () {
})
})
.error(function (errors) {
// errors contains a list of errors
console.log("errors:" + errors);
});
```
## Examples
You can run a local HTTP server by running `grunt` in the root folder and then point your browser to http://127.0.0.1:8000/examples/ to see the examples.