将url中localhost端口改为当前host端口
This commit is contained in:
@ -14,6 +14,7 @@ import { getTheme, setTheme } from "../Obj/Element/theme";
|
|||||||
import { setActiveViewer as setMultiViewportActiveViewer } from './MultiViewportMode'
|
import { setActiveViewer as setMultiViewportActiveViewer } from './MultiViewportMode'
|
||||||
import { setActiveViewer as setSplitActiveViewer, getSdk } from './SplitScreen'
|
import { setActiveViewer as setSplitActiveViewer, getSdk } from './SplitScreen'
|
||||||
import { updateCluster } from './cluster/cluster'
|
import { updateCluster } from './cluster/cluster'
|
||||||
|
import { getHost } from "../on";
|
||||||
|
|
||||||
let coordinateSystem = 'EPSG:4326'
|
let coordinateSystem = 'EPSG:4326'
|
||||||
let _cartesian
|
let _cartesian
|
||||||
@ -244,6 +245,16 @@ function setBillboardDefaultUrl(url, name) {
|
|||||||
else {
|
else {
|
||||||
name = 'billboard_default_url'
|
name = 'billboard_default_url'
|
||||||
}
|
}
|
||||||
|
let host = getHost()
|
||||||
|
if (!url.startsWith("http")) {
|
||||||
|
//说明是本地的json,在磁盘中存在的
|
||||||
|
if (!url.includes(":")) {
|
||||||
|
if (host) {
|
||||||
|
let o = new URL(url, host)
|
||||||
|
url = o.href
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
localStorage.setItem(name, url);
|
localStorage.setItem(name, url);
|
||||||
}
|
}
|
||||||
/*获取广告牌默认图标*/
|
/*获取广告牌默认图标*/
|
||||||
|
@ -145,15 +145,7 @@ class Model extends BaseModel {
|
|||||||
if (!this.sdk || !this.sdk.viewer || !this.sdk.viewer.scene) {
|
if (!this.sdk || !this.sdk.viewer || !this.sdk.viewer.scene) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (!url.startsWith("http")) {
|
url = this.replaceHost(url, this.options.host)
|
||||||
//说明是本地的json,在磁盘中存在的
|
|
||||||
if (!url.includes(":")) {
|
|
||||||
if (this.options.host) {
|
|
||||||
let o = new URL(url, this.options.host)
|
|
||||||
url = o.href
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// this.handler = new Cesium.ScreenSpaceEventHandler(
|
// this.handler = new Cesium.ScreenSpaceEventHandler(
|
||||||
// this.sdk.viewer.canvas
|
// this.sdk.viewer.canvas
|
||||||
// )
|
// )
|
||||||
@ -1336,7 +1328,9 @@ class Model extends BaseModel {
|
|||||||
this.name = this.options.name || '未命名对象'
|
this.name = this.options.name || '未命名对象'
|
||||||
this.originalOptions = this.deepCopyObj(this.options)
|
this.originalOptions = this.deepCopyObj(this.options)
|
||||||
this._DialogObject.close()
|
this._DialogObject.close()
|
||||||
this.Dialog.confirmCallBack && this.Dialog.confirmCallBack(this.originalOptions)
|
let cdoptions = this.deepCopyObj(this.options)
|
||||||
|
cdoptions.host = ''
|
||||||
|
this.Dialog.confirmCallBack && this.Dialog.confirmCallBack(cdoptions)
|
||||||
syncData(this.sdk, this.options.id)
|
syncData(this.sdk, this.options.id)
|
||||||
syncSplitData(this.sdk, this.options.id)
|
syncSplitData(this.sdk, this.options.id)
|
||||||
},
|
},
|
||||||
|
@ -247,7 +247,9 @@ class BaseTerrain extends BaseSource {
|
|||||||
}
|
}
|
||||||
this.originalOptions = this.deepCopyObj(this.options)
|
this.originalOptions = this.deepCopyObj(this.options)
|
||||||
this._DialogObject.close()
|
this._DialogObject.close()
|
||||||
this.Dialog.confirmCallBack && this.Dialog.confirmCallBack(this.originalOptions)
|
let cdoptions = this.deepCopyObj(this.options)
|
||||||
|
cdoptions.host = ''
|
||||||
|
this.Dialog.confirmCallBack && this.Dialog.confirmCallBack(cdoptions)
|
||||||
},
|
},
|
||||||
// resetCallBack: () => {
|
// resetCallBack: () => {
|
||||||
// this.name = this.originalOptions.name
|
// this.name = this.originalOptions.name
|
||||||
|
@ -211,8 +211,9 @@ class BillboardObject extends Base {
|
|||||||
let index = 0
|
let index = 0
|
||||||
|
|
||||||
let font = getFontFamily(that.labelFontFamily) || 'Helvetica'
|
let font = getFontFamily(that.labelFontFamily) || 'Helvetica'
|
||||||
|
let url = that.replaceHost(that.options.billboard.image, that.options.host)
|
||||||
that._frameImages = []
|
that._frameImages = []
|
||||||
if (that.options.billboard.image && that.options.billboard.image.endsWith('gif')) {
|
if (url && url.endsWith('gif')) {
|
||||||
isGlf = true
|
isGlf = true
|
||||||
switch (that.options.heightMode) {
|
switch (that.options.heightMode) {
|
||||||
case 2:
|
case 2:
|
||||||
@ -222,7 +223,7 @@ class BillboardObject extends Base {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let gifImg = document.createElement('img')
|
let gifImg = document.createElement('img')
|
||||||
gifImg.setAttribute('rel:animated_src', that.options.billboard.image)
|
gifImg.setAttribute('rel:animated_src', url)
|
||||||
gifImg.setAttribute('rel:auto_play', '1')
|
gifImg.setAttribute('rel:auto_play', '1')
|
||||||
const imgDiv = document.createElement('div')
|
const imgDiv = document.createElement('div')
|
||||||
imgDiv.appendChild(gifImg)
|
imgDiv.appendChild(gifImg)
|
||||||
@ -272,7 +273,7 @@ class BillboardObject extends Base {
|
|||||||
else {
|
else {
|
||||||
let image = new Image()
|
let image = new Image()
|
||||||
image.src =
|
image.src =
|
||||||
that.options.billboard.image ||
|
url ||
|
||||||
that.getSourceRootPath() + '/img/A-ablu-blank.png'
|
that.getSourceRootPath() + '/img/A-ablu-blank.png'
|
||||||
switch (that.options.heightMode) {
|
switch (that.options.heightMode) {
|
||||||
case 2:
|
case 2:
|
||||||
@ -720,11 +721,21 @@ class BillboardObject extends Base {
|
|||||||
}
|
}
|
||||||
|
|
||||||
get billboardImage() {
|
get billboardImage() {
|
||||||
return this.options.billboard.image
|
let url = this.options.billboard.image
|
||||||
|
if (url && !url.startsWith("http")) {
|
||||||
|
//说明是本地的json,在磁盘中存在的
|
||||||
|
if (!url.includes(":")) {
|
||||||
|
if (this.options.host) {
|
||||||
|
let o = new URL(url, this.options.host)
|
||||||
|
url = o.href
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return url
|
||||||
}
|
}
|
||||||
set billboardImage(v) {
|
set billboardImage(v) {
|
||||||
let _this = this
|
let _this = this
|
||||||
this.options.billboard.image = v
|
this.options.billboard.image = this.replaceHost(v, this.options.host)
|
||||||
let url =
|
let url =
|
||||||
this.options.billboard.image ||
|
this.options.billboard.image ||
|
||||||
getBillboardDefaultUrl(this.options.billboard.defaultImage) ||
|
getBillboardDefaultUrl(this.options.billboard.defaultImage) ||
|
||||||
@ -1497,10 +1508,11 @@ class BillboardObject extends Base {
|
|||||||
}
|
}
|
||||||
|
|
||||||
set billboardDefaultImage(v) {
|
set billboardDefaultImage(v) {
|
||||||
setBillboardDefaultUrl(v, this.options.billboard.defaultImage)
|
let url = this.replaceHost(v, this.options.host)
|
||||||
|
setBillboardDefaultUrl(url, this.options.billboard.defaultImage)
|
||||||
this._elms.billboardDefaultImage &&
|
this._elms.billboardDefaultImage &&
|
||||||
this._elms.billboardDefaultImage.forEach(item => {
|
this._elms.billboardDefaultImage.forEach(item => {
|
||||||
item.src = v
|
item.src = url
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1575,8 +1587,10 @@ class BillboardObject extends Base {
|
|||||||
}
|
}
|
||||||
this.originalOptions = this.deepCopyObj(this.options)
|
this.originalOptions = this.deepCopyObj(this.options)
|
||||||
this._DialogObject.close()
|
this._DialogObject.close()
|
||||||
|
let cdoptions = this.deepCopyObj(this.options)
|
||||||
|
cdoptions.host = ''
|
||||||
this.Dialog.confirmCallBack &&
|
this.Dialog.confirmCallBack &&
|
||||||
this.Dialog.confirmCallBack(this.originalOptions)
|
this.Dialog.confirmCallBack(cdoptions)
|
||||||
syncData(this.sdk, this.options.id)
|
syncData(this.sdk, this.options.id)
|
||||||
syncSplitData(this.sdk, this.options.id)
|
syncSplitData(this.sdk, this.options.id)
|
||||||
},
|
},
|
||||||
|
@ -594,12 +594,13 @@ class GroundSvg extends Base {
|
|||||||
}
|
}
|
||||||
|
|
||||||
init() {
|
init() {
|
||||||
|
let url = this.replaceHost(this.options.url, this.options.host)
|
||||||
syncData(this.sdk, this.options.id)
|
syncData(this.sdk, this.options.id)
|
||||||
this.hierarchys = []
|
this.hierarchys = []
|
||||||
this.originalOptions = this.deepCopyObj(this.options)
|
this.originalOptions = this.deepCopyObj(this.options)
|
||||||
let geometryArray = []
|
let geometryArray = []
|
||||||
const loader = new SVGLoader();
|
const loader = new SVGLoader();
|
||||||
loader.load(this.options.url, (data) => {
|
loader.load(url, (data) => {
|
||||||
if (!this.sdk || !this.sdk.viewer || !this.sdk.viewer.entities) {
|
if (!this.sdk || !this.sdk.viewer || !this.sdk.viewer.entities) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -923,7 +924,9 @@ class GroundSvg extends Base {
|
|||||||
this.text && (this.options.text.position = { lng: this.text.position[0], lat: this.text.position[1], alt: this.text.position[2] })
|
this.text && (this.options.text.position = { lng: this.text.position[0], lat: this.text.position[1], alt: this.text.position[2] })
|
||||||
this.originalOptions = this.deepCopyObj(this.options)
|
this.originalOptions = this.deepCopyObj(this.options)
|
||||||
this._DialogObject.close()
|
this._DialogObject.close()
|
||||||
this.Dialog.confirmCallBack && this.Dialog.confirmCallBack(this.originalOptions)
|
let cdoptions = this.deepCopyObj(this.options)
|
||||||
|
cdoptions.host = ''
|
||||||
|
this.Dialog.confirmCallBack && this.Dialog.confirmCallBack(cdoptions)
|
||||||
syncData(this.sdk, this.options.id)
|
syncData(this.sdk, this.options.id)
|
||||||
syncSplitData(this.sdk, this.options.id)
|
syncSplitData(this.sdk, this.options.id)
|
||||||
},
|
},
|
||||||
|
@ -1305,9 +1305,10 @@ class TrajectoryMotion extends Base {
|
|||||||
}
|
}
|
||||||
// 创建模型
|
// 创建模型
|
||||||
static async addModel(that) {
|
static async addModel(that) {
|
||||||
|
let url = that.replaceHost(that.options.model.url, that.options.host)
|
||||||
let options = {
|
let options = {
|
||||||
id: that.options.id,
|
id: that.options.id,
|
||||||
url: that.options.model.url,
|
url: url,
|
||||||
show: that.options.show ? that.options.model.show : false,
|
show: that.options.show ? that.options.model.show : false,
|
||||||
scale: that.options.model.scale,
|
scale: that.options.model.scale,
|
||||||
// minimumPixelSize: that.options.model.pixelSize,
|
// minimumPixelSize: that.options.model.pixelSize,
|
||||||
@ -2285,7 +2286,7 @@ class TrajectoryMotion extends Base {
|
|||||||
|
|
||||||
async changeModelUrl(url) {
|
async changeModelUrl(url) {
|
||||||
this.sdk.viewer.scene.primitives.remove(this.model)
|
this.sdk.viewer.scene.primitives.remove(this.model)
|
||||||
this.options.model.url = url
|
this.options.model.url = this.replaceHost(url, this.options.host)
|
||||||
let matrix = this.model.modelMatrix
|
let matrix = this.model.modelMatrix
|
||||||
let position = this.model.position
|
let position = this.model.position
|
||||||
let options = {
|
let options = {
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
* @update: 2023-12-01 12:12
|
* @update: 2023-12-01 12:12
|
||||||
*/
|
*/
|
||||||
import Tools from "../../Tools";
|
import Tools from "../../Tools";
|
||||||
|
import { getHost, getToken } from "../../on";
|
||||||
import { regLeftClickCallback, regRightClickCallback, regMoveCallback } from "../../Global/ClickCallback";
|
import { regLeftClickCallback, regRightClickCallback, regMoveCallback } from "../../Global/ClickCallback";
|
||||||
import { regLeftClickCallback as regLeftClickCallback2, regRightClickCallback as regRightClickCallback2, regMoveCallback as regMoveCallback2 } from "../../Global/SplitScreen/ClickCallback";
|
import { regLeftClickCallback as regLeftClickCallback2, regRightClickCallback as regRightClickCallback2, regMoveCallback as regMoveCallback2 } from "../../Global/SplitScreen/ClickCallback";
|
||||||
import { setSplitDirection, syncSplitData, getSdk } from "../../Global/SplitScreen";
|
import { setSplitDirection, syncSplitData, getSdk } from "../../Global/SplitScreen";
|
||||||
@ -27,6 +28,7 @@ class Base extends Tools {
|
|||||||
this.clickCallBack = null
|
this.clickCallBack = null
|
||||||
this.rightClickCallBack = null
|
this.rightClickCallBack = null
|
||||||
this.picking = true
|
this.picking = true
|
||||||
|
this.options.host = this.options.host || getHost()
|
||||||
this.setDefaultValue()
|
this.setDefaultValue()
|
||||||
|
|
||||||
// this.sdk.addIncetance(this.options.id, this)
|
// this.sdk.addIncetance(this.options.id, this)
|
||||||
|
@ -1195,6 +1195,55 @@ class Tools {
|
|||||||
return `${year}${month}${day}${hours}${minutes}${seconds}${milliseconds}`;
|
return `${year}${month}${day}${hours}${minutes}${seconds}${milliseconds}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
replaceHost(url, host) {
|
||||||
|
let newUrl = url
|
||||||
|
if(!url || !host) {
|
||||||
|
return url
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
if (!url.startsWith("http")) {
|
||||||
|
//说明是本地的json,在磁盘中存在的
|
||||||
|
if (!url.includes(":")) {
|
||||||
|
if (this.options.host) {
|
||||||
|
let o = new URL(url, this.options.host)
|
||||||
|
newUrl = o.href
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return newUrl
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// 移除可能的用户名:密码前缀
|
||||||
|
const authRegex = /^[^@]+@/;
|
||||||
|
if (authRegex.test(url)) {
|
||||||
|
url = url.replace(authRegex, '');
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加协议前缀(如果没有)
|
||||||
|
if (!/^[a-z]+:\/\//i.test(url)) {
|
||||||
|
url = 'http://' + url;
|
||||||
|
}
|
||||||
|
|
||||||
|
const parsedUrl = new URL(url);
|
||||||
|
const parsedUrl2 = new URL(host);
|
||||||
|
let hostname = parsedUrl.hostname;
|
||||||
|
let port = parsedUrl.port;
|
||||||
|
|
||||||
|
// 处理IPv6地址(如果有括号)
|
||||||
|
if (hostname.startsWith('[') && hostname.endsWith(']')) {
|
||||||
|
hostname = hostname.slice(1, -1);
|
||||||
|
}
|
||||||
|
if ((hostname === 'localhost' || hostname === '127.0.0.1') && parseInt(port, 10) !== 55110) {
|
||||||
|
parsedUrl.port = parsedUrl2.port
|
||||||
|
parsedUrl.protocol = parsedUrl2.protocol
|
||||||
|
newUrl = parsedUrl.toString()
|
||||||
|
}
|
||||||
|
return newUrl
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
return newUrl
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user