123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224 |
- (function($, Drupal) {
- Drupal.behaviors.qd30mini = {
- attach: function(context, settings) {
- Cesium.BingMapsApi.defaultKey = 'mqrOOSbN2SMpDuWhHx0W~HVi_IW2A0UwRAV1xLIZuTQ~AnSezO-xLZ4_s1rf8ydB6Wf0aRdKtw_znPffJQ9qKbntyOPWFvitPVAvxT0v6dib';
- var viewer = new Cesium.Viewer('boutique-map-cesium', {
- animation: false,
- homeButton: false,
- vrButton: false,
- infoBox: false,
- geocoder: false,
- sceneModePicker: false,
- selectionIndicator: true,
- timeline: false,
- navigationHelpButton: false,
- navigationInstructionsInitiallyVisible: false,
- scene3DOnly: false,
- shadows: true,
- terrainShadows: true,
- // imageryProvider : new Cesium.createOpenStreetMapImageryProvider({
- // url : 'https://stamen-tiles.a.ssl.fastly.net/toner-background/'
- // url : 'http://tile.stamen.com/toner/',
- // alpha : 0.5
- // brightness : 1.0,
- // contrast : 1.0,
- // hue : 3.0,
- // saturation : 3.0,
- // url : 'http://tile.stamen.com/watercolor/',
- // 'https://b.tile.openstreetmap.org'
- // }),
- baseLayerPicker: false
- });
- var camera = viewer.camera;
- var scene = viewer.scene;
- var ellipsoid = scene.globe.ellipsoid;
- var canvas = viewer.canvas;
- var layers = viewer.scene.imageryLayers;
- var globe = viewer.scene.globe;
- globe.imageryLayers.removeAll();
- globe.baseColor = Cesium.Color.fromCssColorString('#f3f3f3');
- var tonerLayer = layers.addImageryProvider(Cesium.createOpenStreetMapImageryProvider({
- url : 'http://tile.stamen.com/toner/'
- }));
- tonerLayer.alpha = 0.2;
- var terrainProvider = new Cesium.CesiumTerrainProvider({
- url : '//assets.agi.com/stk-terrain/world',
- requestVertexNormals: true
- });
- var dataSource = Cesium.GeoJsonDataSource.load('/sites/quartierdix30/files/geojson/quartier_en.json').then(function(data) {
- viewer.dataSources.add(data);
- var entities = data.entities.values;
- var billboards = new Cesium.BillboardCollection();
- for (var i = 0; i < entities.length; i++) {
- var entity = entities[i];
- entity.polygon.outline = true;
- entity.polygon.outlineWidth = 1.2;
- entity.polygon.outlineColor = Cesium.Color.BLACK;
- if (entity.properties.hasOwnProperty('level')) {
- entity.polygon.extrudedHeight = 0.5 * (entity.properties.level * 10);
- }
- if (entity.properties.hasOwnProperty("colour")) {
- if (entity.properties.hasOwnProperty("event")) {
- entity.polygon.material = new Cesium.StripeMaterialProperty({
- evenColor : Cesium.Color.fromCssColorString(entity.properties.colour),
- oddColor : Cesium.Color.BLACK,
- repeat : 10
- });
- } else {
- entity.polygon.material = Cesium.Color.fromCssColorString(entity.properties.colour);
- }
- }
- if (entity.properties.hasOwnProperty("description")) {
- entity.description = '<div>' + entity.properties.description
- + '</div>';
- }
- }
- });
- function gotoQD30() {
- var pos = Cesium.Ellipsoid.WGS84.cartesianToCartographic(new Cesium.Cartesian3(
- 1278149.1996018, -4297423.8092246,
- 4522591.15943));
- pos.latitude = Cesium.Math.toDegrees(pos.latitude);
- pos.longitude = Cesium.Math.toDegrees(pos.longitude);
- viewer.camera.flyTo({
- destination : Cesium.Cartesian3.fromDegrees(pos.longitude, pos.latitude, pos.height),
- orientation : {
- heading : 5.51747,
- pitch : -1.419427,
- roll : 6.2675
- },
- duration: 0.5
- });
- }
- function colourReset() {
- for (var j = 0; j < viewer.dataSources.get(0).entities.values.length; j++) {
- var entity = viewer.dataSources.get(0).entities.values[j];
- if (entity.properties.hasOwnProperty('colour')) {
- entity.polygon.material = new Cesium.Color.fromCssColorString(entity.properties.colour);
- }
- }
- }
- function selectStore(entity, data) {
- var pCoords = entity.polygon.hierarchy.getValue(viewer.clock.currentTime);
- var avgPoint = pCoords.positions.length > 1 ? Math.round(pCoords.positions.length / 2) : 0;
- var topPoint = 0;
- for (var xy = 0; xy < pCoords.positions.length - 1; xy++) {
- if (pCoords.positions[xy+1].x > pCoords.positions[xy].x) {
- topPoint = xy;
- }
- }
- var pos = Cesium.Ellipsoid.WGS84.cartesianToCartographic(pCoords.positions[avgPoint]);
- pos.latitude = Cesium.Math.toDegrees(pos.latitude);
- pos.longitude = Cesium.Math.toDegrees(pos.longitude);
- viewer.camera.flyTo({
- destination : Cesium.Cartesian3.fromDegrees(pos.longitude +0.0008, pos.latitude -0.0012, 300),
- // destination : Cesium.Cartesian3.fromDegrees(pos.longitude, pos.latitude, 300),
- orientation : {
- heading : 5.982409,
- pitch : -1.075697,
- roll : 6.281078
- },
- duration: 1
- });
- for (var j = 0; j < data.entities.values.length; j++) {
- if (entity.id == data.entities.values[j].id) {
- for (z = 0; z < viewer.entities.values.length; z++) {
- if (viewer.entities.values[z].name == 'selectionOutline') {
- viewer.entities.remove(viewer.entities.values[z]);
- }
- }
- viewer.entities.add({
- name : 'selectionOutline',
- polyline : {
- positions : pCoords.positions,
- width : 20,
- material : new Cesium.PolylineGlowMaterialProperty({
- glowPower : 0.9,
- color : Cesium.Color.fromCssColorString('#008B8B'),
- extrudedHeight : entity.polygon.extrudedHeight + 20
- })
- }
- });
- }
- }
- colourReset();
- entity.polygon.material = Cesium.Color.fromCssColorString('#000000');
- viewer.selectedEntity = entity;
- }
- function gotoBoutique(title, data) {
- var choice = title.trim();
- var found = false;
- if (choice == 'Quartier Dix 30') {
- gotoQD30();
- } else {
- var length = data.entities.values.length;
- for (var i = 0; i < length; i++) {
- var entity = data.entities.values[i];
- if (entity.properties.name != undefined) {
- if (entity.properties.name.toLowerCase() == choice.toLowerCase()) {
- found = true;
- if (entity.polygon.hierarchy._value.positions.length > 1) {
- selectStore(entity, data);
- } else {
- gotoQD30();
- }
- }
- }
- }
- }
- if (!found) gotoQD30();
- }
- window.onload = function() {
- var data = viewer.dataSources.get(0);
- gotoBoutique(settings.boutique_title, data);
- // var frame = viewer.infoBox.frame;
- // var cssLink = frame.contentDocument.createElement('link');
- // cssLink.href = Cesium.buildModuleUrl('../../../../css/qd30minimap.css');
- // cssLink.rel = 'stylesheet';
- // cssLink.type = 'text/css';
- // frame.contentDocument.head.appendChild(cssLink);
- clickHandler = new Cesium.ScreenSpaceEventHandler(scene.canvas);
- clickHandler.setInputAction(function(movement) {
- var pickedObject = scene.pick(movement.position);
- if (Cesium.defined(pickedObject)) {
- for (var i = 0; i < data.entities.values.length; i++) {
- var entity = data.entities.values[i];
- if (entity.properties.name != undefined) {
- if (entity.properties.name.toLowerCase().trim() == pickedObject.id.properties.name.toLowerCase().trim()) {
- gotoBoutique(pickedObject.id.properties.name, data);
- }
- }
- }
- }
- }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
- }
- }}})(jQuery, Drupal);
|