@@ -72514,8 +72514,8 @@ class core_Util_Util {
72514
72514
var canvas = document.createElement('canvas');
72515
72515
return Boolean(canvas && canvas.getContext("webgl2"));
72516
72516
}
72517
- static getRootUrl(url = window.location.href ) {
72518
- /* let tempRootUrl = {};
72517
+ static getRootUrl(url) {
72518
+ let tempRootUrl = {};
72519
72519
let onlineUrl = 'https://www.supermapol.com/', itestUrl = 'https://itest.supermapol.com/';
72520
72520
if (tempRootUrl[url]) return tempRootUrl[url];
72521
72521
let rootUrl = "";
@@ -72533,8 +72533,41 @@ class core_Util_Util {
72533
72533
}
72534
72534
}
72535
72535
tempRootUrl[url] = rootUrl;
72536
- return rootUrl;*/
72537
- return 'http://127.0.0.1:8090/iportal/';
72536
+ return rootUrl;
72537
+ // return 'http://127.0.0.1:8090/iportal/';
72538
+ }
72539
+ /**
72540
+ * 获取https或http域名
72541
+ * @param url
72542
+ * @returns {*}
72543
+ */
72544
+ static getAnchor(url) {
72545
+ let tempAnchor = {};
72546
+ if (tempAnchor[url]) {
72547
+ return tempAnchor[url];
72548
+ }
72549
+ let anchor = document.createElement('a');
72550
+ anchor.href = url;
72551
+ tempAnchor[url] = anchor;
72552
+ return anchor;
72553
+ }
72554
+ /**
72555
+ * 获取端口号
72556
+ *
72557
+ * @param url {string} url地址
72558
+ * @returns {*|string|string}
72559
+ */
72560
+ static getHost(url) {
72561
+ let anchor = this.getAnchor(url);
72562
+ if (!anchor) {
72563
+ return null;
72564
+ }
72565
+ let port = anchor.port, host = anchor.host;
72566
+ //IE下会自动给host添加http(80), https(443)
72567
+ if (port === "80" || port === "443") {
72568
+ return host.split(":")[0];
72569
+ }
72570
+ return host;
72538
72571
}
72539
72572
/**
72540
72573
* 是否为字符串
@@ -80352,26 +80385,49 @@ const DatavizWebMap_mapInfo ={
80352
80385
},
80353
80386
"layers": [
80354
80387
{
80355
- "layerType": "VECOTR",
80356
- "featureType": "LINE",
80388
+ "layerType": "UNIQUE",
80357
80389
"visible": true,
80358
- "name": "Jingjin:BaseMap_L",
80359
- "dataTypes":{},
80390
+ "name": "浙江高等院校",
80391
+ "featureType": "POINT",
80392
+ "xyField": {
80393
+ "xField": "经度",
80394
+ "yField": "纬度"
80395
+ },
80360
80396
"style": {
80361
- "strokeWidth": 2,
80397
+ "colors": [
80398
+ "#D53E4F",
80399
+ "#FC8D59",
80400
+ "#FEE08B",
80401
+ "#FFFFBF",
80402
+ "#E6F598",
80403
+ "#99D594",
80404
+ "#3288BD"
80405
+ ],
80406
+ "customSettings": {
80407
+ "http://www.qzu.zj.cn": "#bd10e0",
80408
+ "www.qzct.net": "#7ed321"
80409
+ },
80410
+ "themeField":"网址",
80411
+ "fillColor": "#3288bd",
80412
+ "fillOpacity": 0.9,
80362
80413
"lineDash": "solid",
80363
- "strokeColor": "#4CC8A3",
80364
- "strokeOpacity": 0.9
80414
+ "radius": 5,
80415
+ "strokeColor": "#ffffff",
80416
+ "strokeOpacity": 1,
80417
+ "strokeWidth": 1
80365
80418
},
80366
- "url": "http://192.168.12.58:8091/iserver/services/data-jingjin/rest/data",
80367
- "projection": "EPSG:4326"
80419
+ "projection": "EPSG:4326",
80420
+ "dataSource": {
80421
+ "type": "PORTAL_DATA",
80422
+ "serverId": "327767450"
80423
+ }
80368
80424
}
80369
80425
],
80370
80426
"description": "",
80371
80427
"projection": "EPSG:3857",
80372
80428
"title": "Unuqie",
80373
80429
"version": "1.0"
80374
- }
80430
+ };
80375
80431
/**
80376
80432
* @class ol.supermap.WebMap
80377
80433
* @category iPortal/Online
@@ -80452,6 +80508,24 @@ class DatavizWebMap_DatavizWebMap extends external_ol_default.a.Observable {
80452
80508
addBaseMap(mapInfo) {
80453
80509
this.createView(mapInfo);
80454
80510
this.map.addLayer(this.createBaseLayer(mapInfo));
80511
+ /*if(mapInfo.baseLayer && mapInfo.baseLayer.isLabel) {
80512
+ let layerInfo = mapInfo.baseLayer;
80513
+ //存在天地图路网
80514
+ let labelLayer = new ol.layer.Tile({
80515
+ source: this.createTiandituSource(layerInfo, layerInfo.layerType, mapInfo.projection, true),
80516
+ zIndex: layerInfo.zIndex || 0,
80517
+ visible: layerInfo.visible
80518
+ });
80519
+ this.map.addLayer(labelLayer);
80520
+ }*/
80521
+ let layerInfo = mapInfo.baseLayer;
80522
+ //存在天地图路网
80523
+ let labelLayer = new external_ol_default.a.layer.Tile({
80524
+ source: this.createTiandituSource(layerInfo, layerInfo.layerType, mapInfo.projection, true),
80525
+ zIndex: layerInfo.zIndex || 0,
80526
+ visible: layerInfo.visible
80527
+ });
80528
+ this.map.addLayer(labelLayer);
80455
80529
}
80456
80530
createView(options) {
80457
80531
let view = this.map.getView(),
@@ -80629,9 +80703,10 @@ class DatavizWebMap_DatavizWebMap extends external_ol_default.a.Observable {
80629
80703
let features;
80630
80704
if(layers.length > 0) {
80631
80705
layers.forEach(function (layer) {
80632
- if(layer.dataSource && layer.dataSource.serverId) {
80706
+ if(( layer.dataSource && layer.dataSource.serverId) || layer.layerType === "MARKER" ) {
80633
80707
//数据存储到iportal上了
80634
- let url = `${core_Util_Util.getRootUrl()}web/datas/${layer.dataSource.serverId}/content.json?pageSize=9999999¤tPage=1`;
80708
+ let serverId = layer.dataSource ? layer.dataSource.serverId : layer.serverId;
80709
+ let url = `${core_Util_Util.getRootUrl(that.mapUrl)}web/datas/${serverId}/content.json?pageSize=9999999¤tPage=1`;
80635
80710
FetchRequest.get(url, null, {withCredentials: true}).then(function (response) {
80636
80711
return response.json()
80637
80712
}).then(function (data) {
@@ -80647,28 +80722,26 @@ class DatavizWebMap_DatavizWebMap extends external_ol_default.a.Observable {
80647
80722
that.addLayer(layer, features);
80648
80723
}
80649
80724
})
80650
- } else if(layer.url) {
80651
- if(layer.layerType === "SUPERMAP_REST") {
80652
- //从iserver获取的瓦片地图
80653
- this.map.addLayer(this.createBaseLayer(layer));
80654
- } else if(layer.layerType === "VECOTR") {
80655
- //从restData获取数据
80656
- core_Util_Util.getFeatureBySQL(layer.url, [layer.dataSourseName || layer.name], function(result) {
80657
- features = that.parseGeoJsonData2Feature({
80658
- allDatas: { features: result.result.features.features },
80659
- fileCode: layer.projection.split(':')[1],
80660
- featureProjection: that.baseProjection.split(':')[1]
80661
- });
80662
-
80663
- /*if (!layerObj.layerInfo.dataTypes) {
80664
- let data = DataManager.assembleTableJSONData(result.result.features);
80665
- layerObj.layerInfo.dataTypes = Util.getFieldType(data.titles, data.rows[0]);
80666
- }*/
80667
- that.addLayer(layer, features);
80668
- }, function(err) {
80669
- console.log(err);
80725
+ } else if(layer.layerType === "SUPERMAP_REST" || layer.layerType === "WMS" || layer.layerType === "WMTS") {
80726
+ this.map.addLayer(this.createBaseLayer(layer));
80727
+ } else if(layer.dataSource && layer.dataSource.type === "REST_DATA") {
80728
+ let dataSource = layer.dataSource;
80729
+ //从restData获取数据
80730
+ core_Util_Util.getFeatureBySQL(dataSource.url, [dataSource.dataSourseName || layer.name], function(result) {
80731
+ features = that.parseGeoJsonData2Feature({
80732
+ allDatas: { features: result.result.features.features },
80733
+ fileCode: layer.projection,
80734
+ featureProjection: that.baseProjection
80670
80735
});
80671
- }
80736
+
80737
+ /*if (!layerObj.layerInfo.dataTypes) {
80738
+ let data = DataManager.assembleTableJSONData(result.result.features);
80739
+ layerObj.layerInfo.dataTypes = Util.getFieldType(data.titles, data.rows[0]);
80740
+ }*/
80741
+ that.addLayer(layer, features);
80742
+ }, function(err) {
80743
+ console.log(err);
80744
+ });
80672
80745
}
80673
80746
}, this);
80674
80747
}
@@ -80839,6 +80912,8 @@ class DatavizWebMap_DatavizWebMap extends external_ol_default.a.Observable {
80839
80912
layer = this.createRangeLayer(layerInfo, features, allFeatures);
80840
80913
} else if(layerInfo.layerType === "HEAT") {
80841
80914
layer = this.createHeatLayer(layerInfo, features);
80915
+ } else if(layerInfo.layerType === "MARKER"){
80916
+ layer = this.createMarkerLayer(layerInfo, features)
80842
80917
}
80843
80918
layer && this.map.addLayer(layer);
80844
80919
if(layerInfo.labelStyle && layerInfo.labelStyle.labelField) {
@@ -80886,7 +80961,7 @@ class DatavizWebMap_DatavizWebMap extends external_ol_default.a.Observable {
80886
80961
if(!imgDom) {
80887
80962
imgDom = new Image();
80888
80963
//要组装成完整的url
80889
- imgDom.src = core_Util_Util.getRootUrl() + imageInfo.url;
80964
+ imgDom.src = core_Util_Util.getRootUrl(this.mapUrl ) + imageInfo.url;
80890
80965
}
80891
80966
shape = new external_ol_default.a.style.Icon({
80892
80967
img: imgDom,
@@ -81343,6 +81418,64 @@ class DatavizWebMap_DatavizWebMap extends external_ol_default.a.Observable {
81343
81418
return false;
81344
81419
}
81345
81420
}
81421
+ createMarkerLayer(layerInfo, features) {
81422
+ features && this.setEachFeatureDefaultStyle(features);
81423
+ return new external_ol_default.a.layer.Vector({
81424
+ source: new external_ol_default.a.source.Vector({
81425
+ features: features,
81426
+ wrapX: false
81427
+ })
81428
+ });
81429
+ }
81430
+ /**
81431
+ * @description 为feature设置样式
81432
+ * @author gaozy
81433
+ * @param {any} features
81434
+ * @param {any} [style=null]
81435
+ * @param {Number} 图层id
81436
+ */
81437
+ setEachFeatureDefaultStyle(features, timeId) {
81438
+ let that = this;
81439
+ features = (core_Util_Util.isArray(features) || features instanceof external_ol_default.a.Collection) ? features : [features];
81440
+ features.forEach(function (feature) {
81441
+ let geomType = feature.getGeometry().getType().toUpperCase();
81442
+ // let styleType = geomType === "POINT" ? 'MARKER' : geomType;
81443
+ let defaultStyle = feature.getProperties().useStyle;
81444
+ if(geomType === 'POINT' && defaultStyle.text) {
81445
+ //说明是文字的feature类型
81446
+ geomType = "TEXT";
81447
+ }
81448
+ let featureInfo = this.setFeatureInfo(feature);
81449
+ feature.setProperties({ useStyle: defaultStyle, featureInfo:featureInfo});
81450
+ //标注图层的feature上需要存一个layerId,为了之后样式应用到图层上使用
81451
+ feature.layerId = timeId;
81452
+ if(geomType === 'POINT' && defaultStyle.src &&
81453
+ defaultStyle.src.indexOf('http://') === -1 && defaultStyle.src.indexOf('https://') === -1) {
81454
+ //说明地址不完整
81455
+ defaultStyle.src = core_Util_Util.getRootUrl(that.mapUrl) + defaultStyle.src;
81456
+ }
81457
+ feature.setStyle(StyleUtils_StyleUtils.toOpenLayersStyle(defaultStyle, geomType))
81458
+ }, this)
81459
+ }
81460
+ setFeatureInfo(feature) {
81461
+ let featureInfo;
81462
+ if(feature.getProperties().featureInfo && feature.getProperties().featureInfo.dataViz_title !== undefined
81463
+ && feature.getProperties().featureInfo.dataViz_title != null) {
81464
+ //有featureInfo信息就不需要再添加
81465
+ featureInfo = feature.getProperties().featureInfo;
81466
+ } else {
81467
+ featureInfo = this.getDefaultAttribute();
81468
+ }
81469
+ let properties = feature.getProperties();
81470
+ for(let key in featureInfo) {
81471
+ if(properties[key]) {
81472
+ featureInfo[key] = properties[key];
81473
+ delete properties[key];
81474
+ }
81475
+ }
81476
+ return featureInfo;
81477
+ }
81478
+
81346
81479
81347
81480
}
81348
81481
0 commit comments