/*
|
* url 目标url
|
* arg 需要替换的参数名称
|
* arg_val 替换后的参数的值
|
* return url 参数替换后的url
|
*/
|
export function changeURLArg (url, arg, argValue) {
|
var pattern = arg + '=([^&]*)'
|
var replaceText = arg + '=' + argValue
|
if (url.match(pattern)) {
|
var tmp = '/(' + arg + '=)([^&]*)/gi'
|
// eslint-disable-next-line no-eval
|
tmp = url.replace(eval(tmp), replaceText)
|
return tmp
|
} else {
|
if (url.match('[\\?]')) {
|
return url + '&' + replaceText
|
} else {
|
return url + '?' + replaceText
|
}
|
}
|
// eslint-disable-next-line no-unreachable
|
return url + '\n' + arg + '\n' + argValue
|
}
|
|
/**
|
* 脉冲效果
|
*/
|
export function pulseEffect (xy) {
|
let times = 1000
|
const colors = ['#00f100', '#ff0000']
|
// 插件 效果实现
|
var pulsingIcon = window.L.icon.pulse({
|
iconSize: [30, 30],
|
color: colors[0],
|
fillColor: ''
|
})
|
var picGroupMarker = window.L.marker(xy, { icon: pulsingIcon }).addTo(window.mapManager.hightlightLayer)
|
// 定时
|
var timeInterval = setInterval(() => {
|
if (times > 0) {
|
times--
|
} else {
|
clearInterval(timeInterval)
|
picGroupMarker.remove()
|
}
|
}, 1000)
|
}
|
|
export function reversePolyLine (feature) {
|
const coordinates = clone(feature.geometry.coordinates)
|
var latlng = []
|
for (var j = 0; j < coordinates.length; j++) {
|
let coordinate = coordinates[j]
|
coordinate = [coordinate[1], coordinate[0]]
|
latlng.push(coordinate)
|
}
|
return latlng
|
}
|
|
export function reverseMultiLine (feature) {
|
const coordinates = clone(feature.geometry.coordinates)
|
var latlng = []
|
for (var j = 0; j < coordinates.length; j++) {
|
const coordinate = coordinates[j]
|
var xy = []
|
for (var k = 0; k < coordinate.length; k++) {
|
let coor = coordinate[k]
|
if (coor.length > 2) {
|
coor = coor.splice(2, 1)
|
}
|
xy.push(coor.reverse())
|
}
|
latlng.push(xy)
|
}
|
return latlng
|
}
|
|
/**
|
* 设置弹窗平移位置
|
* @param pos
|
* @param value
|
*/
|
export function setPanTo (pos, value) {
|
var position = pos
|
position = window.map.latLngToLayerPoint(position)
|
position.y += value
|
position = window.map.layerPointToLatLng(position)
|
window.map.flyTo(position)
|
}
|
|
/**
|
* 复制对象
|
* @param obj
|
* @returns {{}}
|
*/
|
export function clone (obj) {
|
var o
|
// 如果 他是对象object的话 , 因为null,object,array 也是'object';
|
if (typeof obj === 'object') {
|
// 如果 他是空的话
|
if (obj === null) {
|
o = null
|
} else {
|
// 如果 他是数组arr的话
|
if (obj instanceof Array) {
|
o = []
|
for (var i = 0, len = obj.length; i < len; i++) {
|
o.push(clone(obj[i]))
|
}
|
} else {
|
// 如果 他是对象object的话
|
o = {}
|
for (var j in obj) {
|
o[j] = clone(obj[j])
|
}
|
}
|
}
|
} else {
|
o = obj
|
}
|
return o
|
}
|
|
/**
|
*
|
* 设置index,线在最下面,点在上面
|
* @param layerGroup 图层组
|
*/
|
export function setZIndex (layer) {
|
if (Array.isArray(layer)) {
|
for (var i = 0; i < layer.length; i++) {
|
setZIndex(layer[i])
|
}
|
} else {
|
if (layer.getLayers) {
|
setZIndex(layer.getLayers())
|
} else {
|
if (layer.feature && (layer.feature.geometry.type === 'LineString' || layer.feature.geometry.type === 'MultiLineString')) {
|
layer.bringToBack && layer.bringToBack()
|
} else {
|
layer.bringToFront && layer.bringToFront()
|
}
|
}
|
}
|
}
|
|
/**
|
* 去掉两头空格
|
* @param str
|
* @returns {*}
|
*/
|
export function lrtrim (str) {
|
return str.replace(/^\s+|\s+$/g, '')
|
}
|
|
export default clone
|