`,
position: marker.getLngLat(),
offset: new T.Point(0, 8), // 设置标注文字的位置
opacity: 1, // 设置文本的显示不透明度(范围0-1)
});
label.setBorderLine(0); // 设置文本的边框线宽
label.setBackgroundColor("transparent"); // 设置文本的背景色(透明色)
label.setFontColor("#FFFFFF");
label.setFontSize(10);
marker.label = label;
if (isRed) {
lastClickedMarker = marker;
}
map.addOverLay(label);
map.addOverLay(marker); // 将标注添加到地图中
return "addMarker加载成功 id:" + id
}
//更新位坐标
function updateLocation(log, lat) {
if (locationMarker) {
map.removeOverLay(locationMarker);
}
var newPoint = new T.LngLat(log, lat);
let icon = new T.Icon({
iconUrl: CONFIG.IMAGES.LOCATION,
iconSize: new T.Point(20, 20),
iconAnchor: new T.Point(10, 10)
});
locationMarker = new T.Marker(
newPoint,
{ icon: icon }
);
map.addOverLay(locationMarker);
map.panTo(newPoint);
}
//保存定位坐标生成轨迹
var path = [];
var lineLayer = new T.Polyline([], { color: '#E9900A', weight: 3, opacity: 0.8 });
let locationMarker;
function updateInspectionLocation(log, lat) {
var lastLat = lat;
var newPoint = new T.LngLat(log, lastLat);
path.push(newPoint);
lineLayer.setLngLats(path);
map.addOverLay(lineLayer);
}
var pipePath = [];
var pipeLineLayer = new T.Polyline([], { color: '#E9900A', weight: 3, opacity: 0.8 });
// 管网线路管理
const PipelineManager = {
lines: [], // 存储所有完成的线路
currentLine: {
points: [], // 当前线路的点
overlay: null // 当前线路的图层对象
},
// 线路样式配置
style: {
color: '#1890FF',
weight: 3,
opacity: 0.8
},
/**
* 添加点到管网线路
* @param {number} lng 经度
* @param {number} lat 纬度
* @param {boolean} isNewLine 是否开始新的线路
*/
addPoint(lng, lat, isNewLine) {
if (isNewLine) {
this.finishCurrentLine();
}
const point = new T.LngLat(lng, lat);
this.currentLine.points.push(point);
if (this.currentLine.points.length > 1) {
this.updateCurrentLineDisplay();
}
},
/**
* 更新当前线路的显示
*/
updateCurrentLineDisplay() {
if (!this.currentLine.overlay) {
// 创建新的线路图层
this.currentLine.overlay = new T.Polyline(this.currentLine.points, this.style);
map.addOverLay(this.currentLine.overlay);
} else {
// 更新现有线路的点
this.currentLine.overlay.setLngLats(this.currentLine.points);
}
},
/**
* 完成当前线路
*/
finishCurrentLine() {
if (this.currentLine.points.length > 1) {
if (this.currentLine.overlay) {
// 将当前线路添加到完成列表
this.lines.push(this.currentLine.overlay);
}
} else if (this.currentLine.overlay) {
// 如果点数不足,清除图层
map.removeOverLay(this.currentLine.overlay);
}
// 重置当前线路
this.currentLine = {
points: [],
overlay: null
};
},
/**
* 显示所有线路
*/
showAll() {
this.lines.forEach(line => map.addOverLay(line));
if (this.currentLine.overlay) {
map.addOverLay(this.currentLine.overlay);
}
},
/**
* 隐藏所有线路
*/
hideAll() {
this.lines.forEach(line => map.removeOverLay(line));
if (this.currentLine.overlay) {
map.removeOverLay(this.currentLine.overlay);
}
},
/**
* 清除所有线路
*/
clearAll() {
this.hideAll();
this.lines = [];
this.currentLine = {
points: [],
overlay: null
};
}
};
/**
* 添加管网线路点
*/
function addPipeNetwork(lng, lat, isNewLine) {
PipelineManager.addPoint(lng, lat, isNewLine);
}
/**
* 显示所有管网线路
*/
function showAllPipeLines() {
PipelineManager.showAll();
}
/**
* 隐藏所有管网线路
*/
function hideAllPipeLines() {
PipelineManager.hideAll();
}
/**
* 清除所有管网线路
*/
function clearAllPipeLines() {
PipelineManager.clearAll();
}
var aginPath = [];
var oldLineLayer = new T.Polyline([], { color: '#E9900A', weight: 3, opacity: 0.8 });
//显示因异常关闭的巡检记录
function aginShowLocation(lng, lat) {
// 调用 Android 提供的接口,获取数据
console.log("aginShowLocation>>lng:" + lng + ">>>lat:" + lat);
var newPoint = new T.LngLat(lng, lat);
aginPath.push(newPoint);
oldLineLayer.setLngLats(aginPath);
map.addOverLay(oldLineLayer);
}
//清除巡检记录轨迹
function cleanLocationLay() {
if (lineLayer) {
map.removeOverLay(lineLayer);
path = []
}
if (locationMarker) {
map.removeOverLay(locationMarker);
}
if (oldLineLayer) {
aginPath = []
map.removeOverLay(oldLineLayer);
}
}
//清除本地定位坐标位置
function cleanLoclLay() {
if (locationMarker) {
map.removeOverLay(locationMarker);
}
}
//是否显示了地图中心的针用来修改坐标
var isShowCenterPin;
//开始获取屏幕中间定位
function showPin(lng, lat) {
var newPoint = new T.LngLat(lng, lat);
map.panTo(newPoint);
isShowCenterPin = true;
map.addEventListener("moveend", mapMoveEnd);
window.Android.refreshCenter(map.getCenter().getLng(), map.getCenter().getLat());
return true;
}
//取消修改定位
function cancelPin() {
isShowCenterPin = false;
}
//成功修改取水口经纬度后刷新取水口位置
function refreshMarker(id, lng, lat, name) {
map.removeOverLay(lastClickedMarker.label);
map.removeOverLay(lastClickedMarker);
addMarker(id, lng, lat, name, true);
}
function mapMoveEnd(e) {
const center = e.target.getCenter();
window.Android.refreshCenter(center.getLng(), center.getLat());
}
// 添加防抖函数
function debounce(fn, delay) {
let timer = null;
return function () {
if (timer) clearTimeout(timer);
timer = setTimeout(() => {
fn.apply(this, arguments);
}, delay);
}
}
// 创建marker图标的方法可以抽取出来复用
function createIcon(iconUrl, size = 28) {
return new T.Icon({
iconUrl: iconUrl,
iconSize: new T.Point(size, size),
iconAnchor: new T.Point(size / 2, size)
});
}
//添加分水房
function addDivide(id, lng, lat, name) {
addDivide(id, lng, lat, name, false)
}
//添加分水房
function addDivide(id, lng, lat, name, isRed) {
console.log("function》》》》》addMarker>>>id:" + id);
const iconUrl = isRed ? CONFIG.IMAGES.DIVIDE_RED : CONFIG.IMAGES.DIVIDE_BLUE;
let marker = new T.Marker(
new T.LngLat(lng, lat),
{ icon: createIcon(iconUrl) }
);
//添加点击事件
marker.addEventListener("click", (data) => {
addDivideListener(id, data)
});
let label = new T.Label({
text: `
${name}
`,
position: marker.getLngLat(),
offset: new T.Point(0, 8), // 设置标注文字的位置
opacity: 1, // 设置文本的显示不透明度(范围0-1)
});
label.setBorderLine(0); // 设置文本的边框线宽
label.setBackgroundColor("transparent"); // 设置文本的背景色(透明色)
label.setFontColor("#FFFFFF");
label.setFontSize(10);
marker.label = label;
if (isRed) {
lastClickedMarker = marker;
}
map.addOverLay(label);
map.addOverLay(marker); // 将标注添加到地图中
return "addMarker加载成功 id:" + id
}
// 修改点击标注的图标
function chageDivideIcon(data) {
// 点击的标注改为红色
var currentMarker = data.target;
currentMarker.setIcon(createIcon(CONFIG.IMAGES.DIVIDE_RED));
if (lastClickedDivide !== null) {
if (!isEqualsLngLat(data.target.getLngLat(), lastClickedDivide.getLngLat())) {
lastClickedDivide.setIcon(createIcon(CONFIG.IMAGES.DIVIDE_BLUE));
}
}
if (lastClickedMarker !== null) {
lastClickedMarker.setIcon(createIcon(CONFIG.IMAGES.MARKER_BLUE));
}
lastClickedDivide = data.target;
map.panTo(currentMarker.getLngLat());
}
// 点击标注的事件
function addDivideListener(id, data) {
// if (!isShowCenterPin) {
chageDivideIcon(data);
showDivideDetail(id);
// } else {
// showToast("当前正在修改选中取水口的经纬度,完成或退出后才可选择其他!");
// }
}
// 调用原生安卓方法显示取水口详情
function showDivideDetail(data) {
isShowDivideDetail = true;
window.Android.showDivideDetail(data);
}
})();