|
|
@ -1,9 +1,16 @@ |
|
|
|
import axios from 'axios' |
|
|
|
import axios from "axios"; |
|
|
|
|
|
|
|
const identifyLayerActions = { |
|
|
|
'021102': async (params) => { |
|
|
|
"021102": async (params) => { |
|
|
|
return new Promise(async (resolve, reject) => { |
|
|
|
const { url, input_geometry, geometry_type, layers = 'all', returnGeometry = false, tolerance = 1 } = params; |
|
|
|
const { |
|
|
|
url, |
|
|
|
input_geometry, |
|
|
|
geometry_type, |
|
|
|
layers = "all", |
|
|
|
returnGeometry = false, |
|
|
|
tolerance = 1, |
|
|
|
} = params; |
|
|
|
const result = await axios.get(`${url}.json`); |
|
|
|
if (result.status === 200 && result.data) { |
|
|
|
const { xmin, ymin, xmax, ymax } = result.data.fullExtent; |
|
|
@ -19,13 +26,29 @@ const identifyLayerActions = { |
|
|
|
} |
|
|
|
}); |
|
|
|
}, |
|
|
|
'030300': async (params) => { |
|
|
|
"030300": async (params) => { |
|
|
|
console.log(params); |
|
|
|
}, |
|
|
|
'081100': async (params) => { |
|
|
|
"081100": async (params) => { |
|
|
|
return new Promise(async (resolve, reject) => { |
|
|
|
const { queryMode, bufferDistance, geometry, url, layerTable, layerName, k } = params; |
|
|
|
const queryUrl = url.split('maps/')[0].replace('map-', 'data-'); |
|
|
|
const { |
|
|
|
queryMode, |
|
|
|
bufferDistance, |
|
|
|
geometry, |
|
|
|
url, |
|
|
|
layerTable, |
|
|
|
layerName, |
|
|
|
k, |
|
|
|
} = params; |
|
|
|
// const queryUrl = url.split('maps/')[0].replace('map-', 'data-');
|
|
|
|
let queryUrl = ""; |
|
|
|
if (layerName.split(";").length == 1 && layerName.includes(":")) { |
|
|
|
queryUrl = url.split("maps/")[0].replace("map-", "data-"); |
|
|
|
} else if (layerName.split(";").length == 2 && layerName.includes(":")) { |
|
|
|
let dataServiceLayerInfo = layerName.split(";"); |
|
|
|
queryUrl = dataServiceLayerInfo[0]; |
|
|
|
layerName = dataServiceLayerInfo[1]; |
|
|
|
} |
|
|
|
let requestUrl = `${queryUrl}data/featureResults.rjson?returnContent=true`; |
|
|
|
if (k) { |
|
|
|
requestUrl += `&k=${k}`; |
|
|
@ -36,47 +59,46 @@ const identifyLayerActions = { |
|
|
|
datasetNames: [layerTable || layerName], |
|
|
|
getFeatureMode: queryMode, |
|
|
|
bufferDistance, |
|
|
|
geometry |
|
|
|
geometry, |
|
|
|
}), |
|
|
|
{ |
|
|
|
headers: { |
|
|
|
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' |
|
|
|
} |
|
|
|
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", |
|
|
|
}, |
|
|
|
} |
|
|
|
); |
|
|
|
resolve(result); |
|
|
|
}); |
|
|
|
} |
|
|
|
}, |
|
|
|
}; |
|
|
|
|
|
|
|
export const queryLayersByPos = (position, layerList = [], cb) => { |
|
|
|
|
|
|
|
const { lng, lat } = position; |
|
|
|
const layers = layerList |
|
|
|
const layers = layerList; |
|
|
|
layers.forEach(async (layer) => { |
|
|
|
const action = identifyLayerActions[layer.layerType]; |
|
|
|
switch (layer.layerType) { |
|
|
|
case '021102': { |
|
|
|
case "021102": { |
|
|
|
const input_geometry = `${lng},${lat}`; |
|
|
|
const geometry_type = 'esriGeometryPoint'; |
|
|
|
const geometry_type = "esriGeometryPoint"; |
|
|
|
const result = await action({ |
|
|
|
input_geometry, |
|
|
|
geometry_type, |
|
|
|
url: layer.url |
|
|
|
url: layer.url, |
|
|
|
}); |
|
|
|
let res; |
|
|
|
if (result?.results?.length > 0) { |
|
|
|
res = result.results[0] |
|
|
|
res = result.results[0]; |
|
|
|
} |
|
|
|
if(cb) cb(res) |
|
|
|
if (cb) cb(res); |
|
|
|
break; |
|
|
|
} |
|
|
|
case '030300': |
|
|
|
case "030300": |
|
|
|
break; |
|
|
|
case '081100': { |
|
|
|
const queryMode = 'BUFFER'; |
|
|
|
case "081100": { |
|
|
|
const queryMode = "BUFFER"; |
|
|
|
const bufferDistance = 0.0005; // 缓冲距离大概是50米
|
|
|
|
const spatialQueryMode = 'INTERSECT'; |
|
|
|
const spatialQueryMode = "INTERSECT"; |
|
|
|
const geometry = { |
|
|
|
id: 0, |
|
|
|
style: null, |
|
|
@ -84,17 +106,16 @@ export const queryLayersByPos = (position, layerList = [], cb) => { |
|
|
|
points: [ |
|
|
|
{ |
|
|
|
x: lng, |
|
|
|
y: lat |
|
|
|
} |
|
|
|
y: lat, |
|
|
|
}, |
|
|
|
], |
|
|
|
type: 'POINT' |
|
|
|
type: "POINT", |
|
|
|
}; |
|
|
|
let type = ''; |
|
|
|
let type = ""; |
|
|
|
let isSite = false; |
|
|
|
let layerTable = ''; |
|
|
|
let layerTable = ""; |
|
|
|
if (layer.extendData) { |
|
|
|
const extendData = JSON.parse(layer.extendData); |
|
|
|
|
|
|
|
} |
|
|
|
const result = await action({ |
|
|
|
queryMode, |
|
|
@ -104,11 +125,10 @@ export const queryLayersByPos = (position, layerList = [], cb) => { |
|
|
|
layerName: layer.text, |
|
|
|
layerTable, |
|
|
|
url: layer.url, |
|
|
|
k: layer.serviceToken |
|
|
|
k: layer.serviceToken, |
|
|
|
}); |
|
|
|
if ([200, 201].includes(result.status)) { |
|
|
|
console.log('处理业务数据 >>>>>> ', result) |
|
|
|
|
|
|
|
console.log("处理业务数据 >>>>>> ", result); |
|
|
|
} |
|
|
|
break; |
|
|
|
} |
|
|
|