三维沙盒修改,通号VR内容隐藏
This commit is contained in:
parent
5751a6bbad
commit
857307644f
@ -9,13 +9,14 @@ import { OrbitControls } from '@/jlmap3d/main/control/OrbitControls';
|
|||||||
import { dataManager } from '@/jlmap3d/jl3dtrafficplan/sandbox/datamanager';
|
import { dataManager } from '@/jlmap3d/jl3dtrafficplan/sandbox/datamanager';
|
||||||
|
|
||||||
|
|
||||||
import StompClient from '@/utils/sock';
|
|
||||||
import store from '@/store/index';
|
import store from '@/store/index';
|
||||||
// import { Loading } from 'element-ui';
|
// import { Loading } from 'element-ui';
|
||||||
import {Stats} from '@/jlmap3d/main/lib/stats.min.js';
|
import {Stats} from '@/jlmap3d/main/lib/stats.min.js';
|
||||||
|
|
||||||
export function Jl3dSandBoxTest(dom,skinCode,routegroup,token) {
|
export function Jl3dSandBoxTest(dom,textUi,skinCode,routegroup,token) {
|
||||||
let scope = this;
|
let scope = this;
|
||||||
|
textUi.updataData("sss");
|
||||||
var camera, scene, renderer,controls, light;
|
var camera, scene, renderer,controls, light;
|
||||||
|
|
||||||
camera = new THREE.PerspectiveCamera( 45, window.innerWidth / window.innerHeight, 0.001, 50000 );
|
camera = new THREE.PerspectiveCamera( 45, window.innerWidth / window.innerHeight, 0.001, 50000 );
|
||||||
@ -43,9 +44,10 @@ export function Jl3dSandBoxTest(dom,skinCode,routegroup,token) {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
let manager = new dataManager(scene);
|
let manager = new dataManager(scene,camera,routegroup);
|
||||||
manager.init(skinCode);
|
manager.init(skinCode);
|
||||||
|
|
||||||
|
|
||||||
animate();
|
animate();
|
||||||
//循环渲染函数
|
//循环渲染函数
|
||||||
function animate() {
|
function animate() {
|
||||||
|
@ -7,23 +7,102 @@ import { sectionModel } from '@/jlmap3d/jl3dtrafficplan/sandbox/sectionmodel';
|
|||||||
import { signalModel } from '@/jlmap3d/jl3dtrafficplan/sandbox/signalmodel';
|
import { signalModel } from '@/jlmap3d/jl3dtrafficplan/sandbox/signalmodel';
|
||||||
import { stationModel } from '@/jlmap3d/jl3dtrafficplan/sandbox/stationmodel';
|
import { stationModel } from '@/jlmap3d/jl3dtrafficplan/sandbox/stationmodel';
|
||||||
import { trainModel } from '@/jlmap3d/jl3dtrafficplan/sandbox/trainmodel';
|
import { trainModel } from '@/jlmap3d/jl3dtrafficplan/sandbox/trainmodel';
|
||||||
|
import { ModelManager } from '@/jlmap3d/jl3dtrafficplan/sandbox/loader';
|
||||||
|
|
||||||
export function dataManager(scene) {
|
import {Materialload} from '@/jlmap3d/main/loaders/Materialload.js';
|
||||||
|
//数据整合
|
||||||
|
import { sandBoxConnect } from '@/jlmap3d/jl3dtrafficplan/sandbox/sandboxconnect';
|
||||||
|
|
||||||
|
import { textUi } from '@/jlmap3d/jl3dtrafficplan/sandbox/textUi';
|
||||||
|
|
||||||
|
|
||||||
|
export function dataManager(scene,camera,routegroup) {
|
||||||
let scope = this;
|
let scope = this;
|
||||||
|
|
||||||
let section = new sectionModel();
|
let section = new sectionModel(scene);
|
||||||
let signal = new signalModel();
|
let signal = new signalModel(scene);
|
||||||
let station = new stationModel();
|
let station = new THREE.Group();
|
||||||
let train = new trainModel();
|
scene.add( station );
|
||||||
|
let train = new trainModel(scene);
|
||||||
|
this.topCurve = "";
|
||||||
|
this.downCurve = "";
|
||||||
|
console.log(routegroup);
|
||||||
|
this.nowConnect = '';
|
||||||
|
|
||||||
|
var detaildiv = document.createElement("div");
|
||||||
|
detaildiv.style.width = "128px";
|
||||||
|
detaildiv.id = "detail";
|
||||||
|
detaildiv.style.backgroundColor = "#ccc"
|
||||||
|
detaildiv.style.height = "256px";
|
||||||
|
detaildiv.style.border = "1px solid #f00";
|
||||||
|
detaildiv.style.position = "absolute";
|
||||||
|
detaildiv.style.top = "0px";
|
||||||
|
detaildiv.style.zIndex = 10;
|
||||||
|
detaildiv.style.display = "none";
|
||||||
|
document.body.appendChild(detaildiv);
|
||||||
|
let text = new textUi(scene);
|
||||||
|
text.init();
|
||||||
|
|
||||||
|
let modelmanager = new ModelManager();
|
||||||
|
Materialload(scope);
|
||||||
|
|
||||||
this.init = function(skinCode){
|
this.init = function(skinCode){
|
||||||
loadGeoJson().then(function(data){
|
modelmanager.loadpromise().then(function (data) {
|
||||||
//console.log(data);
|
console.log(data);
|
||||||
|
return loadGeoJson();
|
||||||
|
}).then(function(data){
|
||||||
|
console.log(data);
|
||||||
return loadMapData(skinCode);
|
return loadMapData(skinCode);
|
||||||
|
}).then(function(data){
|
||||||
|
scope.nowConnect = new sandBoxConnect(scope,routegroup,section,signal,station,train);
|
||||||
|
document.addEventListener( 'mousemove', onDocumentMouseMove, false );
|
||||||
|
raycasterList.push(station);
|
||||||
|
raycasterList.push(train.trainGroup);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
let raycaster = new THREE.Raycaster();
|
||||||
|
let mouse = new THREE.Vector2();
|
||||||
|
let line,intersects,intersect;
|
||||||
|
let raycasterList = [];
|
||||||
|
|
||||||
|
function onDocumentMouseMove( event ) {
|
||||||
|
|
||||||
|
event.preventDefault();
|
||||||
|
|
||||||
|
mouse.x = ( event.clientX / window.innerWidth ) * 2 - 1;
|
||||||
|
mouse.y = - ( event.clientY / window.innerHeight ) * 2 + 1;
|
||||||
|
|
||||||
|
raycaster.setFromCamera( mouse, camera );
|
||||||
|
|
||||||
|
for(let i=0;i<raycasterList.length;i++){
|
||||||
|
intersects = raycaster.intersectObjects( raycasterList[i].children );
|
||||||
|
if(intersects.length>0){
|
||||||
|
i = raycasterList.length;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// console.log(intersects);
|
||||||
|
if ( intersects.length > 0 ) {
|
||||||
|
|
||||||
|
intersect = intersects[ 0 ];
|
||||||
|
console.log(intersect.object.position);
|
||||||
|
console.log(text.textplane.position);
|
||||||
|
console.log(intersect.object.name);
|
||||||
|
console.log(intersect.object.groupNumber);
|
||||||
|
detaildiv.style.display = "";
|
||||||
|
detaildiv.style.left = event.clientX-64 + "px";
|
||||||
|
detaildiv.style.top = event.clientY-270 + "px";
|
||||||
|
} else {
|
||||||
|
detaildiv.style.display = "none";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
function loadMapData(skinCode){
|
function loadMapData(skinCode){
|
||||||
return new Promise(function(resolve, reject){
|
return new Promise(function(resolve, reject){
|
||||||
|
|
||||||
@ -35,7 +114,9 @@ export function dataManager(scene) {
|
|||||||
|
|
||||||
getPublishMapDetail(skinCode).then(netdata => {
|
getPublishMapDetail(skinCode).then(netdata => {
|
||||||
console.log(netdata);
|
console.log(netdata);
|
||||||
section.init(netdata.sectionList,netdata.switchList);
|
section.init(netdata.data.sectionList,netdata.data.switchList,stationData);
|
||||||
|
signal.init(netdata.data.signalList,section.topData,section.downData,scope.topCurve,scope.downCurve,modelmanager.signal);
|
||||||
|
train.init(netdata.data.trainList);
|
||||||
resolve("loadMap");
|
resolve("loadMap");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -61,36 +142,41 @@ export function dataManager(scene) {
|
|||||||
let stationListData = null;
|
let stationListData = null;
|
||||||
let originX = 0;
|
let originX = 0;
|
||||||
let originY = 0;
|
let originY = 0;
|
||||||
let double = 1000;
|
let double = 10000;
|
||||||
|
|
||||||
//['成功了', 'success']
|
//['成功了', 'success']
|
||||||
readTextFile(JL3D_LOCAL_STATIC+"/trafficplan/fuzhou1.json", function(text){
|
readTextFile(JL3D_LOCAL_STATIC+"/trafficplan/fuzhou1.json", function(text){
|
||||||
var data = JSON.parse(text);
|
var data = JSON.parse(text);
|
||||||
console.log(data.data.busline_list[0]);
|
// console.log(data.data.busline_list[0]);
|
||||||
stationListData = data.data.busline_list[0];
|
stationListData = data.data.busline_list[0];
|
||||||
let posx = stationListData.xs.split(",");
|
let posx = stationListData.xs.split(",");
|
||||||
let posz = stationListData.ys.split(",");
|
let posz = stationListData.ys.split(",");
|
||||||
|
posx.reverse();
|
||||||
|
posz.reverse();
|
||||||
originX = posx[0];
|
originX = posx[0];
|
||||||
originY = posz[0];
|
originY = posz[0];
|
||||||
|
|
||||||
let pointsTop = [];
|
let pointsTop = [];
|
||||||
let pointsDown = [];
|
let pointsDown = [];
|
||||||
for(let i=0;i<posx.length;i++){
|
for(let i=0;i<posx.length;i++){
|
||||||
pointsTop.push(new THREE.Vector3( (posx[i] -originX)*double, 4.9, -(posz[i]-originY)*double));
|
if(posx[i]<=119.390592){
|
||||||
pointsDown.push(new THREE.Vector3( (posx[i] -originX+0.011)*double, 4.9, -(posz[i]-originY+0.001)*double));
|
pointsTop.push(new THREE.Vector3( (posx[i] -originX)*double, 0, -(posz[i]-originY)*double));
|
||||||
|
pointsDown.push(new THREE.Vector3( (posx[i] -originX+0.001)*double, 0, -(posz[i]-originY+0.001)*double));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var curveTop = new THREE.CatmullRomCurve3(pointsTop );
|
var curveTop = new THREE.CatmullRomCurve3(pointsTop );
|
||||||
curveTop.curveType = "chordal";
|
curveTop.curveType = "chordal";
|
||||||
curveTop.tension = 0.15;
|
curveTop.tension = 0.15;
|
||||||
curveTop.closed = false;
|
curveTop.closed = false;
|
||||||
|
scope.topCurve = curveTop;
|
||||||
|
|
||||||
var curveDown = new THREE.CatmullRomCurve3(pointsDown );
|
var curveDown = new THREE.CatmullRomCurve3(pointsDown );
|
||||||
curveDown.curveType = "chordal";
|
curveDown.curveType = "chordal";
|
||||||
curveDown.tension = 0.15;
|
curveDown.tension = 0.15;
|
||||||
curveDown.closed = false;
|
curveDown.closed = false;
|
||||||
|
scope.downCurve = curveDown;
|
||||||
|
|
||||||
var extrudeSettingsTop = {
|
var extrudeSettingsTop = {
|
||||||
steps : pointsTop.length*2,
|
steps : pointsTop.length*2,
|
||||||
@ -110,34 +196,37 @@ export function dataManager(scene) {
|
|||||||
|
|
||||||
|
|
||||||
var shapeTop = new THREE.Shape();
|
var shapeTop = new THREE.Shape();
|
||||||
shapeTop.moveTo( 0,-0.2 );
|
shapeTop.moveTo( 0,-1 );
|
||||||
shapeTop.lineTo( 0,0.2 );
|
shapeTop.lineTo( 0,1 );
|
||||||
|
|
||||||
var shapeDown = new THREE.Shape();
|
var shapeDown = new THREE.Shape();
|
||||||
shapeDown.moveTo( 0,-0.2 );
|
shapeDown.moveTo( 0,-1 );
|
||||||
shapeDown.lineTo( 0,0.2 );
|
shapeDown.lineTo( 0,1 );
|
||||||
|
|
||||||
let materialSection = new THREE.MeshPhongMaterial( { color : 0x3366ff } );
|
|
||||||
|
|
||||||
|
let materialSection1 = new THREE.MeshPhongMaterial( { color : 0x3366ff } );
|
||||||
|
let materialSection2 = new THREE.MeshPhongMaterial( { color : 0x336600 } );
|
||||||
|
|
||||||
var geometryTop = new THREE.ExtrudeBufferGeometry( shapeTop, extrudeSettingsTop );
|
var geometryTop = new THREE.ExtrudeBufferGeometry( shapeTop, extrudeSettingsTop );
|
||||||
var curveTop = new THREE.Mesh( geometryTop,materialSection) ;
|
var curveTopMesh = new THREE.Mesh( geometryTop,materialSection1) ;
|
||||||
scene.add(curveTop);
|
scene.add(curveTopMesh);
|
||||||
|
|
||||||
var geometryDown = new THREE.ExtrudeBufferGeometry( shapeDown, extrudeSettingsDown );
|
var geometryDown = new THREE.ExtrudeBufferGeometry( shapeDown, extrudeSettingsDown );
|
||||||
var curveDown = new THREE.Mesh( geometryDown,materialSection) ;
|
var curveDownMesh = new THREE.Mesh( geometryDown,materialSection2) ;
|
||||||
scene.add(curveDown);
|
scene.add(curveDownMesh);
|
||||||
|
|
||||||
for(let j=0;j<stationListData.stations.length;j++){
|
for(let j=0;j<stationListData.stations.length;j++){
|
||||||
|
|
||||||
var geometry = new THREE.RingBufferGeometry( 0.5, 1, 16 );
|
var geometry = new THREE.RingBufferGeometry( 5, 10, 16 );
|
||||||
var material = new THREE.MeshBasicMaterial( { color: 0xff3333, side: THREE.DoubleSide } );
|
var material = new THREE.MeshBasicMaterial( { color: 0xff3333, side: THREE.DoubleSide } );
|
||||||
var cube = new THREE.Mesh( geometry, material );
|
var cube = new THREE.Mesh( geometry, material );
|
||||||
let pos = stationListData.stations[j].xy_coords.split(";");
|
let pos = stationListData.stations[j].xy_coords.split(";");
|
||||||
cube.position.set((pos[0] -originX+0.0005)*double,5,-(pos[1]-originY+0.0005)*double);
|
|
||||||
|
cube.name = stationListData.stations[j].name;
|
||||||
|
cube.position.set((pos[0] -originX+0.0005)*double,0.2,-(pos[1]-originY+0.0005)*double);
|
||||||
cube.rotation.x = Math.PI/2;
|
cube.rotation.x = Math.PI/2;
|
||||||
console.log(cube.position);
|
// console.log(cube.position);
|
||||||
scene.add( cube );
|
station.add(cube);
|
||||||
|
|
||||||
}
|
}
|
||||||
resolve("loadJson");
|
resolve("loadJson");
|
||||||
|
|
||||||
|
70
src/jlmap3d/jl3dtrafficplan/sandbox/loader.js
Normal file
70
src/jlmap3d/jl3dtrafficplan/sandbox/loader.js
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
import { BASE_ASSET_API } from '@/api/jlmap3d/assets3d.js';
|
||||||
|
import store from '@/store/index';
|
||||||
|
//模型管理器
|
||||||
|
let mode = "0";
|
||||||
|
export function ModelManager(){
|
||||||
|
let scope = this;
|
||||||
|
|
||||||
|
scope.signal = {
|
||||||
|
id: "1",
|
||||||
|
name: "信号机",
|
||||||
|
deviceType: "signal",
|
||||||
|
type: "signal",
|
||||||
|
url: "/MODEL/2020-07-10/13-42231.FBX",
|
||||||
|
mesh:''
|
||||||
|
};
|
||||||
|
scope.train = {
|
||||||
|
id: "2",
|
||||||
|
name: "列车",
|
||||||
|
deviceType: "train",
|
||||||
|
type: "train",
|
||||||
|
url: "/MODEL/2020-11-16/57-53841.FBX",
|
||||||
|
mesh:''
|
||||||
|
};
|
||||||
|
|
||||||
|
this.station = {
|
||||||
|
code:null,
|
||||||
|
screenDoorOpenStatus:"01",
|
||||||
|
animations:null,
|
||||||
|
mesh:null,
|
||||||
|
action:null
|
||||||
|
};
|
||||||
|
this.station = {
|
||||||
|
code:null,
|
||||||
|
screenDoorOpenStatus:"01",
|
||||||
|
animations:null,
|
||||||
|
mesh:null,
|
||||||
|
action:null
|
||||||
|
};
|
||||||
|
|
||||||
|
//读取模型
|
||||||
|
this.loadpromise = function (mixers){
|
||||||
|
let initlist = [];
|
||||||
|
initlist.push(fbxpromise(scope.signal));
|
||||||
|
initlist.push(fbxpromise(scope.train));
|
||||||
|
//promise按顺序加载
|
||||||
|
return new Promise(function(resolve, reject){
|
||||||
|
|
||||||
|
Promise.all(initlist).then((result) => {
|
||||||
|
// store.dispatch('app/animationsClose');
|
||||||
|
resolve("success"); //['成功了', 'success']
|
||||||
|
}).catch((error) => {
|
||||||
|
//console.log(error);
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
//fbx模型加载
|
||||||
|
function fbxpromise(asset){
|
||||||
|
return new Promise(function(resolve, reject){
|
||||||
|
var loader = new THREE.FBXLoader();
|
||||||
|
|
||||||
|
loader.load( BASE_ASSET_API+asset.url, function ( object ) {
|
||||||
|
asset.mesh = object;
|
||||||
|
resolve(asset.deviceType);
|
||||||
|
} );
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
@ -1,3 +1,179 @@
|
|||||||
export function sandBoxConnect() {
|
|
||||||
let scope = this;
|
import StompClient from '@/utils/sock';
|
||||||
|
import { getBaseUrl } from '@/utils/baseUrl'
|
||||||
|
import { getToken } from '@/utils/auth';
|
||||||
|
import store from '@/store/index';
|
||||||
|
|
||||||
|
// 定于仿真socket接口
|
||||||
|
export function sandBoxConnect(manager,routegroup,section,signal,station,train ) {
|
||||||
|
let scope = this;
|
||||||
|
this.teststomp = new StompClient();
|
||||||
|
let start = true;
|
||||||
|
let topic = '/user/queue/simulation/jl3d/'+routegroup;
|
||||||
|
let header = {'X-Token': getToken() };
|
||||||
|
let topswitch = false;
|
||||||
|
let downswitch = false;
|
||||||
|
socketon(topic);
|
||||||
|
|
||||||
|
function socketon(topic) {
|
||||||
|
try {
|
||||||
|
scope.teststomp.subscribe(topic, callback, header);
|
||||||
|
} catch (error) {
|
||||||
|
console.error('websocket订阅失败');
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
this.socketoff = function(topic) {
|
||||||
|
scope.teststomp.unsubscribe(topic);
|
||||||
|
};
|
||||||
|
|
||||||
|
// 仿真socket接口回调函数
|
||||||
|
function callback(Response) {
|
||||||
|
let data = JSON.parse(Response.body);
|
||||||
|
|
||||||
|
/** 站台客流当前人数信息 */
|
||||||
|
if(data.type == "STAND_PFI"){
|
||||||
|
|
||||||
|
let newStandData = data.body;
|
||||||
|
let count = 0;
|
||||||
|
for(let j=0;j<passerStation.stationlist.length;j++){
|
||||||
|
count = 0;
|
||||||
|
|
||||||
|
for(let i=0;i<newStandData.length;i++){
|
||||||
|
|
||||||
|
|
||||||
|
if(passerStation.stationlist[j].topstand == newStandData[i].standCode){
|
||||||
|
|
||||||
|
passerStation.stationlist[j].topspeed = newStandData[i].to;
|
||||||
|
passerStation.stationlist[j].toppassers = newStandData[i].num;
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
if(passerStation.stationlist[j].downstand == newStandData[i].standCode){
|
||||||
|
|
||||||
|
passerStation.stationlist[j].downspeed = newStandData[i].to;
|
||||||
|
passerStation.stationlist[j].downpassers = newStandData[i].num;
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(count == 2){
|
||||||
|
i = newStandData.length;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
jl3d.updateNowStationData();
|
||||||
|
|
||||||
|
if(start){
|
||||||
|
start = false;
|
||||||
|
jl3d.initTrafficStart();
|
||||||
|
}
|
||||||
|
|
||||||
|
// jl3d.allStationData = data.body;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(data.type == "TRAIN_PFI_BL"){
|
||||||
|
|
||||||
|
if(toptrain.nowcode == data.body.code && topswitch == true){
|
||||||
|
|
||||||
|
//根据上下车人数创建人
|
||||||
|
jl3d.updateNowLeaveData("top",data.body.out);
|
||||||
|
setTimeout(function(){
|
||||||
|
passerAi.passerout("top","start",data.body.in)
|
||||||
|
}, 5000);
|
||||||
|
|
||||||
|
}
|
||||||
|
if(downtrain.nowcode == data.body.code && downswitch == true){
|
||||||
|
//根据上下车人数创建人
|
||||||
|
jl3d.updateNowLeaveData("down",data.body.out);
|
||||||
|
setTimeout(function(){
|
||||||
|
passerAi.passerout("down","start",data.body.in);
|
||||||
|
}, 5000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if(data.type == "DeviceCtrl_3D"){
|
||||||
|
if(data.body.type == "PSD"){
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if(data.body.type == "TRAIN_DOOR"){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if(data.type == "TrainRun_3D"){
|
||||||
|
for(let i=0;i<data.body.length;i++){
|
||||||
|
//top
|
||||||
|
if(data.body[i].right == 1){
|
||||||
|
if(section.topSectionList[data.body[i].section]){
|
||||||
|
if(train.trainlist[data.body[i].code].dispose == false){
|
||||||
|
train.trainlist[data.body[i].code].dispose = true;
|
||||||
|
train.trainGroup.add(train.trainlist[data.body[i].code]);
|
||||||
|
}else{
|
||||||
|
let realprogress = section.topSectionList[data.body[i].section].leftProgress+(section.topSectionList[data.body[i].section].rightProgress - section.topSectionList[data.body[i].section].leftProgress)*data.body[i].offset;
|
||||||
|
train.trainlist[data.body[i].code].position.copy(manager.topCurve.getPoint(realprogress));
|
||||||
|
|
||||||
|
train.trainlist[data.body[i].code].up = new THREE.Vector3(1,0,0);
|
||||||
|
let tangent = manager.topCurve.getTangentAt(realprogress).normalize();
|
||||||
|
train.trainlist[data.body[i].code].axis.crossVectors(train.trainlist[data.body[i].code].up, tangent).normalize();
|
||||||
|
let radians = Math.acos(train.trainlist[data.body[i].code].up.dot(tangent));
|
||||||
|
train.trainlist[data.body[i].code].quaternion.setFromAxisAngle(train.trainlist[data.body[i].code].axis, radians);
|
||||||
|
// console.log("/////");
|
||||||
|
// console.log("offset:"+data.body[i].offset);
|
||||||
|
// console.log("left:"+section.topSectionList[data.body[i].section].leftProgress);
|
||||||
|
// console.log("right:"+section.topSectionList[data.body[i].section].rightProgress);
|
||||||
|
// console.log("real:"+realprogress);
|
||||||
|
}
|
||||||
|
|
||||||
|
}else{
|
||||||
|
train.trainlist[data.body[i].code].dispose = false;
|
||||||
|
train.trainGroup.remove(train.trainlist[data.body[i].code]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//down
|
||||||
|
if(data.body[i].right == 0){
|
||||||
|
if(section.downSectionList[data.body[i].section]){
|
||||||
|
if(train.trainlist[data.body[i].code].dispose == false){
|
||||||
|
train.trainlist[data.body[i].code].dispose = true;
|
||||||
|
train.trainGroup.add(train.trainlist[data.body[i].code]);
|
||||||
|
}else{
|
||||||
|
|
||||||
|
let realprogress = section.downSectionList[data.body[i].section].leftProgress +(section.downSectionList[data.body[i].section].rightProgress - section.downSectionList[data.body[i].section].leftProgress)*data.body[i].offset;
|
||||||
|
train.trainlist[data.body[i].code].position.copy(manager.downCurve.getPoint(realprogress));
|
||||||
|
|
||||||
|
train.trainlist[data.body[i].code].up = new THREE.Vector3(-1,0,0);
|
||||||
|
let tangent = manager.downCurve.getTangentAt(realprogress).normalize();
|
||||||
|
train.trainlist[data.body[i].code].axis.crossVectors(train.trainlist[data.body[i].code].up, tangent).normalize();
|
||||||
|
let radians = Math.acos(train.trainlist[data.body[i].code].up.dot(tangent));
|
||||||
|
train.trainlist[data.body[i].code].quaternion.setFromAxisAngle(train.trainlist[data.body[i].code].axis, radians);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}else{
|
||||||
|
|
||||||
|
train.trainlist[data.body[i].code].dispose = false;
|
||||||
|
train.trainGroup.remove(train.trainlist[data.body[i].code]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(data.type == 'Device_Load_Destroy_3D'){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if(data.type == 'Simulation_Over') {
|
||||||
|
store.dispatch('LogOut').then(() => {
|
||||||
|
location.reload();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,18 +1,27 @@
|
|||||||
export function sectionModel() {
|
export function sectionModel() {
|
||||||
let scope = this;
|
let scope = this;
|
||||||
|
this.sections={
|
||||||
|
datalist:[]
|
||||||
|
};
|
||||||
|
|
||||||
|
this.stopsection = [];
|
||||||
|
|
||||||
|
this.topData = [];
|
||||||
|
this.downData = [];
|
||||||
|
this.topSectionList = [];
|
||||||
|
this.downSectionList = [];
|
||||||
|
this.init = function(sectiondata,switchdata,stationdata){
|
||||||
|
|
||||||
this.init = function(sectiondata,switchdata){
|
|
||||||
for(let i=0;i<sectiondata.length;i++){
|
for(let i=0;i<sectiondata.length;i++){
|
||||||
if(sectiondata[i].type == "01" || sectiondata[i].type == "03"){
|
if(sectiondata[i].type == "01" || sectiondata[i].type == "03"){
|
||||||
//初始化区段对象数据
|
//初始化区段对象数据
|
||||||
let newsection = new SectionModel(sectiondata[i]);
|
let newsection = {};
|
||||||
// console.log(sectiondata[i]);
|
// console.log(sectiondata[i]);
|
||||||
newsection.name = sectiondata[i].name;
|
newsection.name = sectiondata[i].name;
|
||||||
newsection.code = sectiondata[i].code;
|
newsection.code = sectiondata[i].code;
|
||||||
newsection.index = i;
|
newsection.index = i;
|
||||||
newsection.type = sectiondata[i].type;
|
newsection.type = sectiondata[i].type;
|
||||||
newsection.lengthFact = sectiondata[i].lengthFact;
|
newsection.lengthFact = sectiondata[i].lengthFact;
|
||||||
|
|
||||||
newsection.stationcode = sectiondata[i].stationCode;
|
newsection.stationcode = sectiondata[i].stationCode;
|
||||||
newsection.rsection = sectiondata[i].rightSectionCode;
|
newsection.rsection = sectiondata[i].rightSectionCode;
|
||||||
newsection.lsection = sectiondata[i].leftSectionCode;
|
newsection.lsection = sectiondata[i].leftSectionCode;
|
||||||
@ -136,5 +145,85 @@ export function sectionModel() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
let topStartSection,topEndSection,
|
||||||
|
downStartSection,downEndSection;
|
||||||
|
for(let i=0;i<stationdata[0].stands.length;i++){
|
||||||
|
if(stationdata[0].stands[i].right == true){
|
||||||
|
topStartSection = stationdata[0].stands[i].section;
|
||||||
|
}
|
||||||
|
if(stationdata[0].stands[i].right == false){
|
||||||
|
downStartSection = stationdata[0].stands[i].section;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let endNum = stationdata.length-1;
|
||||||
|
for(let i=0;i<stationdata[endNum].stands.length;i++){
|
||||||
|
if(stationdata[0].stands[i].right == true){
|
||||||
|
topEndSection = stationdata[endNum].stands[i].section;
|
||||||
|
}
|
||||||
|
if(stationdata[0].stands[i].right == false){
|
||||||
|
downEndSection = stationdata[endNum].stands[i].section;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let topSections = [];
|
||||||
|
let topLengthFact = 0;
|
||||||
|
topLengthFact += scope.sections.datalist[topStartSection].lengthFact;
|
||||||
|
topSections.push(scope.sections.datalist[topStartSection]);
|
||||||
|
for(let i=0;i<1000;i++){
|
||||||
|
|
||||||
|
if(scope.sections.datalist[topStartSection].rsection != topEndSection){
|
||||||
|
topStartSection = [scope.sections.datalist[topStartSection].rsection];
|
||||||
|
topLengthFact += scope.sections.datalist[topStartSection].lengthFact;
|
||||||
|
topSections.push(scope.sections.datalist[topStartSection]);
|
||||||
|
}else{
|
||||||
|
topStartSection = [scope.sections.datalist[topStartSection].rsection];
|
||||||
|
topLengthFact += scope.sections.datalist[topStartSection].lengthFact;
|
||||||
|
topSections.push(scope.sections.datalist[topStartSection]);
|
||||||
|
i = 1000;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let downSections = [];
|
||||||
|
let downLengthFact = 0;
|
||||||
|
downLengthFact += scope.sections.datalist[downStartSection].lengthFact;
|
||||||
|
downSections.push(scope.sections.datalist[downStartSection]);
|
||||||
|
for(let i=0;i<1000;i++){
|
||||||
|
|
||||||
|
if(scope.sections.datalist[downStartSection].rsection != downEndSection){
|
||||||
|
downStartSection = [scope.sections.datalist[downStartSection].rsection];
|
||||||
|
downLengthFact += scope.sections.datalist[downStartSection].lengthFact;
|
||||||
|
downSections.push(scope.sections.datalist[downStartSection]);
|
||||||
|
}else{
|
||||||
|
downStartSection = [scope.sections.datalist[downStartSection].rsection];
|
||||||
|
downLengthFact += scope.sections.datalist[downStartSection].lengthFact;
|
||||||
|
downSections.push(scope.sections.datalist[downStartSection]);
|
||||||
|
i = 1000;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let nowLengthFact = 0;
|
||||||
|
for(let i=0;i<topSections.length;i++){
|
||||||
|
topSections[i].leftProgress = nowLengthFact/topLengthFact;
|
||||||
|
nowLengthFact += topSections[i].lengthFact;
|
||||||
|
topSections[i].rightProgress = nowLengthFact/topLengthFact;
|
||||||
|
scope.topSectionList[topSections[i].code] = topSections[i];
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
nowLengthFact = 0;
|
||||||
|
for(let i=0;i<downSections.length;i++){
|
||||||
|
downSections[i].leftProgress = nowLengthFact/downLengthFact;
|
||||||
|
nowLengthFact += downSections[i].lengthFact;
|
||||||
|
downSections[i].rightProgress = nowLengthFact/downLengthFact;
|
||||||
|
scope.downSectionList[downSections[i].code] = downSections[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
scope.topData = topSections;
|
||||||
|
scope.downData = downSections;
|
||||||
|
|
||||||
|
console.log(topSections);
|
||||||
|
console.log(topLengthFact);
|
||||||
|
console.log(downSections);
|
||||||
|
console.log(downLengthFact);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,34 @@
|
|||||||
export function signalModel() {
|
export function signalModel(scene) {
|
||||||
let scope = this;
|
let scope = this;
|
||||||
|
|
||||||
|
this.init = function(signalData,topData,downData,topCurve,downCurve,originMesh){
|
||||||
|
console.log(originMesh);
|
||||||
|
for(let i=0;i<signalData.length;i++){
|
||||||
|
if(signalData[i].right == true){
|
||||||
|
for(let j=0;j<topData.length;j++){
|
||||||
|
if(signalData[i].sectionCode == topData[j].code){
|
||||||
|
let newsignal = originMesh.mesh.clone(true);
|
||||||
|
|
||||||
|
newsignal.position.copy(topCurve.getPoint(topData[j].rightProgress));
|
||||||
|
|
||||||
|
scene.add( newsignal );
|
||||||
|
j = topData.length;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(signalData[i].right == false){
|
||||||
|
for(let j=0;j<downData.length;j++){
|
||||||
|
if(signalData[i].sectionCode == downData[j].code){
|
||||||
|
let newsignal = originMesh.mesh.clone(true);
|
||||||
|
|
||||||
|
newsignal.position.copy(downCurve.getPoint(downData[j].leftProgress));
|
||||||
|
|
||||||
|
scene.add( newsignal );
|
||||||
|
j = downData.length;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
70
src/jlmap3d/jl3dtrafficplan/sandbox/textUi.js
Normal file
70
src/jlmap3d/jl3dtrafficplan/sandbox/textUi.js
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
import { JL3D_LOCAL_STATIC } from '@/api/jlmap3d/assets3d.js';
|
||||||
|
export function textUi(scene) {
|
||||||
|
let scope = this;
|
||||||
|
var stationcanvas = new Image();
|
||||||
|
stationcanvas.src = JL3D_LOCAL_STATIC+"/texture/msgtnew.png";
|
||||||
|
this.textplane = "";
|
||||||
|
let textmaterial,textt;
|
||||||
|
this.init = function(){
|
||||||
|
let textgeometry = new THREE.PlaneBufferGeometry( 65, 90, 1 );
|
||||||
|
textt = new THREE.CanvasTexture(getTextCanvas(""));
|
||||||
|
// let materialSection2 = new THREE.MeshPhongMaterial( { color : 0x336600 } );
|
||||||
|
textmaterial = new THREE.MeshBasicMaterial( { side: THREE.DoubleSide,map:textt ,transparent: true} );
|
||||||
|
scope.textplane = new THREE.Mesh( textgeometry, textmaterial );
|
||||||
|
// scope.textplane.rotation.z = Math.PI/2;
|
||||||
|
scene.add(scope.textplane);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.updateUi = function(textData){
|
||||||
|
textt = new THREE.CanvasTexture(getTextCanvas(""));
|
||||||
|
|
||||||
|
textmaterial = new THREE.MeshBasicMaterial( { side: THREE.DoubleSide,map:textt ,transparent: true} );
|
||||||
|
textplane = new THREE.Mesh( textgeometry, textmaterial );
|
||||||
|
textplane.name = stationdata[i].code;
|
||||||
|
|
||||||
|
newstationmesh.add(textplane);
|
||||||
|
textgeometry.dispose();
|
||||||
|
textmaterial.dispose();
|
||||||
|
textt.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
function getTextCanvas(text){
|
||||||
|
let canvas = document.getElementById('canvastexture');
|
||||||
|
|
||||||
|
canvas.width = 128;
|
||||||
|
canvas.height = 256;
|
||||||
|
// canvas.style.width = width;
|
||||||
|
// canvas.style.height = height;
|
||||||
|
|
||||||
|
let ctx = canvas.getContext('2d');
|
||||||
|
//ctx.fillStyle = '#FFFFFF';
|
||||||
|
ctx.fillRect(0, 0,128,256);
|
||||||
|
|
||||||
|
ctx.fillStyle = '#FFFFFF';
|
||||||
|
// ctx.textAlign = 'center';
|
||||||
|
// ctx.textBaseline = 'middle';
|
||||||
|
ctx.clearRect(0,0,128,256);
|
||||||
|
|
||||||
|
ctx.drawImage(stationcanvas,0,0,128,256);
|
||||||
|
|
||||||
|
ctx.font = "10px";
|
||||||
|
if(text == ""){
|
||||||
|
|
||||||
|
}else{
|
||||||
|
ctx.fillText("车站: "+text.name, 15,25);
|
||||||
|
|
||||||
|
ctx.fillText("漫游", 18,48);
|
||||||
|
ctx.fillText("信息", 54,48);
|
||||||
|
ctx.fillText("备忘", 93,48);
|
||||||
|
|
||||||
|
ctx.fillText("车站序号: "+text.name, 10,115);
|
||||||
|
|
||||||
|
ctx.fillText("公里标记:",10 ,135);
|
||||||
|
ctx.fillText(text.kmPost,10 ,155);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
let data = ctx.getImageData(0, 0,128,256);
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
@ -1,3 +1,20 @@
|
|||||||
export function trainModel() {
|
export function trainModel(scene) {
|
||||||
let scope = this;
|
let scope = this;
|
||||||
|
this.trainGroup = new THREE.Group();
|
||||||
|
this.trainlist = [];
|
||||||
|
scene.add(scope.trainGroup);
|
||||||
|
|
||||||
|
this.init = function(trainData){
|
||||||
|
for(let i=0;i<trainData.length;i++){
|
||||||
|
var geometry = new THREE.BoxGeometry( 30, 10, 10 );
|
||||||
|
var material = new THREE.MeshBasicMaterial( {color: 0x00ff00} );
|
||||||
|
var trainBox = new THREE.Mesh( geometry, material );
|
||||||
|
trainBox.code = trainData[i].code;
|
||||||
|
trainBox.groupNumber = trainData[i].groupNumber;
|
||||||
|
trainBox.dispose = false;
|
||||||
|
trainBox.up = new THREE.Vector3(1, 0, 0);
|
||||||
|
trainBox.axis = new THREE.Vector3();
|
||||||
|
scope.trainlist[trainData[i].groupNumber] = trainBox;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,13 +11,15 @@ export function Materialload(jlmap3dedit,standTextureData){
|
|||||||
|
|
||||||
settexture( jlmap3dedit.materiallist,"black",JL3D_LOCAL_STATIC+'/material/signal/5.jpg');
|
settexture( jlmap3dedit.materiallist,"black",JL3D_LOCAL_STATIC+'/material/signal/5.jpg');
|
||||||
}
|
}
|
||||||
|
if(standTextureData){
|
||||||
if(standTextureData.urls.length > 1){
|
if(standTextureData.urls.length > 1){
|
||||||
for(let i=0,leni=standTextureData.urls.length;i<leni;i++){
|
for(let i=0,leni=standTextureData.urls.length;i<leni;i++){
|
||||||
setstationtexture(jlmap3dedit.stationtexture,standTextureData.urls[i].name,BASE_ASSET_API + standTextureData.urls[i].url);
|
setstationtexture(jlmap3dedit.stationtexture,standTextureData.urls[i].name,BASE_ASSET_API + standTextureData.urls[i].url);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function settexture(materiallist,name,textureurl){
|
function settexture(materiallist,name,textureurl){
|
||||||
|
@ -4,13 +4,13 @@
|
|||||||
<div class="jl3dmap3dMaintainerSelect" :style="{'background-image': 'url('+localStatic+'/background/other.jpg)'}">
|
<div class="jl3dmap3dMaintainerSelect" :style="{'background-image': 'url('+localStatic+'/background/other.jpg)'}">
|
||||||
<div class="maintainerSelectButton selectButtonImg1"
|
<div class="maintainerSelectButton selectButtonImg1"
|
||||||
:style="{'background-image': 'url('+localStatic+'/vrtest/maintainer.png)'}"
|
:style="{'background-image': 'url('+localStatic+'/vrtest/maintainer.png)'}"
|
||||||
style="left:10%" @mouseenter="onMouseOverNormal"></div>
|
style="left:40%" @mouseenter="onMouseOverNormal"></div>
|
||||||
|
|
||||||
<div class="maintainerSelectButton selectButtonImg2"
|
<div class="maintainerSelectButton selectButtonImg2"
|
||||||
:style="{'background-image': 'url('+localStatic+'/vrtest/zc.png)'}"
|
:style="{'background-image': 'url('+localStatic+'/vrtest/zc.png)'}"
|
||||||
style="left:10%;" v-show="normalShow"@mouseleave="onMouseOutNormal" @click="initNormal"></div>
|
style="left:40%;" v-show="normalShow"@mouseleave="onMouseOutNormal" @click="initNormal"></div>
|
||||||
|
|
||||||
<div class="maintainerSelectButton selectButtonImg3"
|
<!-- <div class="maintainerSelectButton selectButtonImg3"
|
||||||
:style="{'background-image': 'url('+localStatic+'/vrtest/maintainervr.png)'}"
|
:style="{'background-image': 'url('+localStatic+'/vrtest/maintainervr.png)'}"
|
||||||
style="left:40%;" @mouseenter="onMouseOverVr"></div>
|
style="left:40%;" @mouseenter="onMouseOverVr"></div>
|
||||||
|
|
||||||
@ -24,7 +24,7 @@
|
|||||||
|
|
||||||
<div class="maintainerSelectButton selectButtonImg6"
|
<div class="maintainerSelectButton selectButtonImg6"
|
||||||
:style="{'background-image': 'url('+localStatic+'/vrtest/trvr.png)'}"
|
:style="{'background-image': 'url('+localStatic+'/vrtest/trvr.png)'}"
|
||||||
style="left:70%;" v-show="trainRescueShow" @mouseleave="onMouseOutRescue" @click="initTrainRescueVr"></div>
|
style="left:70%;" v-show="trainRescueShow" @mouseleave="onMouseOutRescue" @click="initTrainRescueVr"></div> -->
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
54
src/views/jlmap3d/trafficplan/component/textui.vue
Normal file
54
src/views/jlmap3d/trafficplan/component/textui.vue
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
<template>
|
||||||
|
<div class="textui"
|
||||||
|
:style="{'background-image': 'url('+localStatic+'/texture/showmsg.png)'}">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import Vue from 'vue';
|
||||||
|
import { JL3D_LOCAL_STATIC } from '@/api/jlmap3d/assets3d.js';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'Jl3dTextUi',
|
||||||
|
components: {
|
||||||
|
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
localStatic:JL3D_LOCAL_STATIC,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
beforeDestroy() {
|
||||||
|
|
||||||
|
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
updataData: function (data) {
|
||||||
|
console.log(data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<style rel="stylesheet/scss" lang="scss" scoped>
|
||||||
|
.textui{
|
||||||
|
position: absolute;
|
||||||
|
top:0;
|
||||||
|
left:0;
|
||||||
|
width:150px;
|
||||||
|
height:300px;
|
||||||
|
z-index: 11;
|
||||||
|
background-repeat:no-repeat;
|
||||||
|
background-size:100%;
|
||||||
|
// display:none;
|
||||||
|
}
|
||||||
|
</style>
|
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div id="jl3d" class="jl3ddraw">
|
<div id="jl3d" class="jl3ddraw">
|
||||||
|
<Jl3d-TextUi ref="jl3dtextui" ></Jl3d-TextUi>
|
||||||
<canvas id="canvastexture" ></canvas>
|
<canvas id="canvastexture" ></canvas>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@ -10,11 +10,12 @@
|
|||||||
import { JL3D_LOCAL_STATIC } from '@/api/jlmap3d/assets3d.js';
|
import { JL3D_LOCAL_STATIC } from '@/api/jlmap3d/assets3d.js';
|
||||||
import { Jl3dSandBoxTest } from '@/jlmap3d/jl3dtrafficplan/jl3dsandboxtest.js';
|
import { Jl3dSandBoxTest } from '@/jlmap3d/jl3dtrafficplan/jl3dsandboxtest.js';
|
||||||
|
|
||||||
|
import Jl3dTextUi from '@/views/jlmap3d/trafficplan/component/textui';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'jl3dsandboxtest',
|
name: 'jl3dsandboxtest',
|
||||||
components: {
|
components: {
|
||||||
|
Jl3dTextUi,
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@ -41,7 +42,7 @@
|
|||||||
methods: {
|
methods: {
|
||||||
initnewdata: function (group,header){
|
initnewdata: function (group,header){
|
||||||
let dom = document.getElementById('jl3d');
|
let dom = document.getElementById('jl3d');
|
||||||
this.jl3d = new Jl3dSandBoxTest(dom, this.$route.query.mapid, this.$route.query.group, this.$route.query.token);
|
this.jl3d = new Jl3dSandBoxTest(dom,this.$refs.jl3dtextui, this.$route.query.mapid, this.$route.query.group, this.$route.query.token);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -55,7 +56,7 @@
|
|||||||
/* left: 0; */
|
/* left: 0; */
|
||||||
width: 50%;
|
width: 50%;
|
||||||
height: 50%;
|
height: 50%;
|
||||||
z-index: 1500;
|
z-index: 9;
|
||||||
}
|
}
|
||||||
|
|
||||||
#canvastexture {
|
#canvastexture {
|
||||||
|
@ -135,78 +135,6 @@
|
|||||||
"name": "地铁1号线(三江口--象峰)",
|
"name": "地铁1号线(三江口--象峰)",
|
||||||
"auto": "0",
|
"auto": "0",
|
||||||
"stations": [{
|
"stations": [{
|
||||||
"status": "1",
|
|
||||||
"trans_flag": "0",
|
|
||||||
"code": "350104",
|
|
||||||
"navi_poiid": "",
|
|
||||||
"name": "三江口",
|
|
||||||
"station_num": "1",
|
|
||||||
"poiid1": "BS13160937",
|
|
||||||
"start_time": "0630",
|
|
||||||
"spell": "san jiang kou",
|
|
||||||
"time_desc_json": "",
|
|
||||||
"station_id": "350100020613041",
|
|
||||||
"navi_poiname": "",
|
|
||||||
"end_time": "2300",
|
|
||||||
"navi_poiside": "",
|
|
||||||
"xy_coords": "119.426122;25.978861",
|
|
||||||
"poiid2_xy": "119.426122;25.978861",
|
|
||||||
"poiid2": "BV11473936"
|
|
||||||
}, {
|
|
||||||
"status": "1",
|
|
||||||
"trans_flag": "0",
|
|
||||||
"code": "350104",
|
|
||||||
"navi_poiid": "",
|
|
||||||
"name": "下洋",
|
|
||||||
"station_num": "2",
|
|
||||||
"poiid1": "BS13161221",
|
|
||||||
"start_time": "0631",
|
|
||||||
"spell": "xia yang",
|
|
||||||
"time_desc_json": "",
|
|
||||||
"station_id": "350100020613042",
|
|
||||||
"navi_poiname": "",
|
|
||||||
"end_time": "2301",
|
|
||||||
"navi_poiside": "",
|
|
||||||
"xy_coords": "119.420776;25.984204",
|
|
||||||
"poiid2_xy": "119.420776;25.984204",
|
|
||||||
"poiid2": "BV10687392"
|
|
||||||
}, {
|
|
||||||
"status": "1",
|
|
||||||
"trans_flag": "0",
|
|
||||||
"code": "350104",
|
|
||||||
"navi_poiid": "",
|
|
||||||
"name": "梁厝",
|
|
||||||
"station_num": "3",
|
|
||||||
"poiid1": "BS11949917",
|
|
||||||
"start_time": "0633",
|
|
||||||
"spell": "liang cuo",
|
|
||||||
"time_desc_json": "",
|
|
||||||
"station_id": "350100020613043",
|
|
||||||
"navi_poiname": "",
|
|
||||||
"end_time": "2303",
|
|
||||||
"navi_poiside": "",
|
|
||||||
"xy_coords": "119.415109;25.994261",
|
|
||||||
"poiid2_xy": "119.415109;25.994261",
|
|
||||||
"poiid2": "BV10687393"
|
|
||||||
}, {
|
|
||||||
"status": "1",
|
|
||||||
"trans_flag": "0",
|
|
||||||
"code": "350104",
|
|
||||||
"navi_poiid": "",
|
|
||||||
"name": "安平",
|
|
||||||
"station_num": "4",
|
|
||||||
"poiid1": "BS13160935",
|
|
||||||
"start_time": "0636",
|
|
||||||
"spell": "an ping",
|
|
||||||
"time_desc_json": "",
|
|
||||||
"station_id": "350100020613044",
|
|
||||||
"navi_poiname": "",
|
|
||||||
"end_time": "2306",
|
|
||||||
"navi_poiside": "",
|
|
||||||
"xy_coords": "119.402224;25.992335",
|
|
||||||
"poiid2_xy": "119.402224;25.992335",
|
|
||||||
"poiid2": "BV11473935"
|
|
||||||
}, {
|
|
||||||
"status": "1",
|
"status": "1",
|
||||||
"trans_flag": "0",
|
"trans_flag": "0",
|
||||||
"code": "350104",
|
"code": "350104",
|
||||||
@ -4622,4 +4550,4 @@
|
|||||||
"discount_flag": "0"
|
"discount_flag": "0"
|
||||||
}]
|
}]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user