(function () {
// 图片路径
const locationIMGPath = 'img/location.png';
const markerBalckPath = 'img/marker_black.svg';
const markerRedPath = 'img/marker_red.svg';
const markerBluePath = 'img/marker_blue.svg';
const centerPin = 'img/push_pin.svg';
let map;
let lastMarker = null;
let lastClickedMarker = null;
let isShowWaterIntakeDetail = false;
let zoom = 12;
// 将方法挂载到 window 上
function mountMethodToWindow() {
window.locationOverLay = locationOverLay;
window.showToast = showToast;
window.addMarker = addMarker;
window.setCenterAndZoom = setCenterAndZoom;
window.updateLocation = updateLocation;
window.aginShowLocation = aginShowLocation;
window.cleanLocationLay = cleanLocationLay;
window.updateInspectionLocation = updateInspectionLocation;
window.cleanLoclLay = cleanLoclLay;
window.showPin = showPin;
window.cancelPin = cancelPin;
window.refreshMarker = refreshMarker;
}
document.addEventListener('DOMContentLoaded', function () {
initMap();
// buttonOverLay();
mountMethodToWindow();
});
// 初始化地图
function initMap() {
// 影像底图
var imageURL = "http://t0.tianditu.gov.cn/img_w/wmts?" +
"SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles" +
"&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=d8beed89b43160a9a185e5aff431f85d";
//创建自定义图层对象
//影像注记(地图上的地址)
var imgURL2 = "http://t0.tianditu.gov.cn/cia_w/wmts?" + "SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cia&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles" +
"&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}" +
"&tk=d8beed89b43160a9a185e5aff431f85d";
var lay = new T.TileLayer(imageURL, { minZoom: 6, maxZoom: 18 });
var lay2 = new T.TileLayer(imgURL2, { minZoom: 6, maxZoom: 18 });
var config = { layers: [lay, lay2] };
map = new T.Map("mapDiv", config);
var scale = new T.Control.Scale();
//添加比例尺控件
map.addControl(scale);
map.centerAndZoom(new T.LngLat(116.40769, 39.89945), zoom); //地图的初始化中心点,此为北京的经纬度
map.addEventListener("click", closeWaterIntakeDetail);
}
// 地图点击后获取经纬度
function getLngLat(lnglat) {
console.log(lnglat.lng.toFixed(6) + "," + lnglat.lat.toFixed(6));
// addClickOverLay(lnglat);
}
// 点击后添加坐标点
function addClickOverLay(lnglat) {
removeMyOverLay();
let marker = new T.Marker(
new T.LngLat(lnglat.lng, lnglat.lat) // 创建标注
);
map.addOverLay(marker); // 将标注添加到地图中
// 设置弹出的窗口样式
let infoWin = new T.InfoWindow();
let sContent =
"
${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 updateLocation(log, lat) {
let icon = new T.Icon({
iconUrl: locationIMGPath,
iconSize: new T.Point(20, 20),
iconAnchor: new T.Point(10, 10)
});
if (locationMarker) {
map.removeOverLay(locationMarker);
}
var newPoint = new T.LngLat(log, lat);
locationMarker = new T.Marker(newPoint, { icon: icon });
map.addOverLay(locationMarker);
map.panTo(newPoint);
}
//保存定位坐标生成轨迹
var path = [];
var lineLayer = new T.Polyline([], { color: '#ff4500', weight: 3, opacity: 0.8 });
let locationMarker;
function updateInspectionLocation(log, lat) {
var lastLat = lat;
// const intervalId = setInterval(() => {
// lastLat=lastLat+0.0001;
var newPoint = new T.LngLat(log, lastLat);
path.push(newPoint);
lineLayer.setLngLats(path);
map.addOverLay(lineLayer);
// 移动地图视角到最后一个位置
// }, 500);
}
var aginPath = [];
var oldLineLayer = new T.Polyline([], { color: '#ff4500', 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) {
var center = e.target.getCenter();
console.log("lng:" + center.getLng() + " lat:" + center.getLat())
window.Android.refreshCenter(center.getLng(), center.getLat());
}
})();