| | |
| | | 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; |
| | | |
| | | } |
| | | |
| | | |
| | | document.addEventListener('DOMContentLoaded', function () { |
| | |
| | | mountMethodToWindow(); |
| | | |
| | | }); |
| | | window.onload = function () { |
| | | console.log(window.onload); // 打印数组数据 |
| | | //加载坐标点 |
| | | window.Android.loadMarker(); |
| | | }; |
| | | // window.onload = function () { |
| | | // console.log(window.onload); // 打印数组数据 |
| | | // //加载坐标点 |
| | | // window.Android.loadMarker(); |
| | | // }; |
| | | // 初始化地图 |
| | | function initMap() { |
| | | // 影像底图 |
| | |
| | | } |
| | | } |
| | | |
| | | // 模拟添加取水口标注 |
| | | function buttonOverLay() { |
| | | map.clearOverLays(); // 清理地图上的所有覆盖物 |
| | | |
| | | let data_info = [ |
| | | [116.417854, 39.921988, "235取水口"], |
| | | [116.406605, 39.921585, "237取水口"], |
| | | [116.412222, 39.912345, "236取水口"] |
| | | ]; |
| | | |
| | | for (let i = 0; i < data_info.length; i++) { |
| | | let icon = new T.Icon({ |
| | | iconUrl: markerBluePath, |
| | | iconSize: new T.Point(27, 27), |
| | | iconAnchor: new T.Point(10, 25) |
| | | }); |
| | | |
| | | let marker = new T.Marker( |
| | | new T.LngLat(data_info[i][0], data_info[i][1]), // 创建标注 |
| | | { icon: icon } |
| | | ); |
| | | |
| | | marker.addEventListener("click", function (data) { |
| | | addMarkerListener(data); |
| | | }); |
| | | |
| | | map.addOverLay(marker); // 将标注添加到地图中 |
| | | |
| | | let label = new T.Label({ |
| | | text: data_info[i][2], |
| | | position: marker.getLngLat(), |
| | | offset: new T.Point(-50, 10), // 设置标注文字的位置 |
| | | opacity: 1, // 设置文本的显示不透明度(范围0-1) |
| | | }); |
| | | label.setBorderLine(0); // 设置文本的边框线宽 |
| | | label.setBackgroundColor("transparent"); // 设置文本的背景色(透明色) |
| | | label.setFontColor("#0000FF"); |
| | | label.setFontSize(10); |
| | | map.addOverLay(label); |
| | | } |
| | | } |
| | | |
| | | // 显示标注点击后的窗口 |
| | | function openInfo(content, e) { |
| | |
| | | } |
| | | |
| | | |
| | | // 将方法挂载到 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; |
| | | |
| | | } |
| | | |
| | | // 调用原生安卓方法显示取水口详情 |
| | | function showWaterIntakeDetail(data) { |
| | |
| | | // 上次点击的标注改为黑色 |
| | | var defaulticon = new T.Icon({ |
| | | iconUrl: markerBluePath, |
| | | iconSize: new T.Point(27, 27), |
| | | iconAnchor: new T.Point(10, 25) |
| | | iconSize: new T.Point(28, 28), |
| | | iconAnchor: new T.Point(14, 28) |
| | | }); |
| | | lastClickedMarker.setIcon(defaulticon); |
| | | } |
| | |
| | | } |
| | | |
| | | // 点击标注的事件 |
| | | function addMarkerListener(data) { |
| | | function addMarkerListener(id, data) { |
| | | chageMarkerIcon(data); |
| | | showWaterIntakeDetail("模拟数据"); |
| | | showWaterIntakeDetail(id); |
| | | } |
| | | |
| | | // 修改点击标注的图标 |
| | |
| | | // 点击后图标 |
| | | var clickedIcon = new T.Icon({ |
| | | iconUrl: markerRedPath, |
| | | iconSize: new T.Point(27, 27), |
| | | iconAnchor: new T.Point(10, 25) |
| | | iconSize: new T.Point(28, 28), |
| | | iconAnchor: new T.Point(14, 28) |
| | | }); |
| | | // 设置当前点击的 marker 为点击后图标 |
| | | currentMarker.setIcon(clickedIcon); |
| | |
| | | if (!isEqualsLngLat(data.target.getLngLat(), lastClickedMarker.getLngLat())) { |
| | | var defaulticon = new T.Icon({ |
| | | iconUrl: markerBluePath, |
| | | iconSize: new T.Point(27, 27), |
| | | iconAnchor: new T.Point(10, 25) |
| | | iconSize: new T.Point(28, 28), |
| | | iconAnchor: new T.Point(14, 28) |
| | | }); |
| | | lastClickedMarker.setIcon(defaulticon); |
| | | } |
| | |
| | | return data1.lat === data2.lat && data1.lng === data2.lng; |
| | | } |
| | | //添加从原生传过来的坐标并显示在地图上 |
| | | function addMarker(jsonData) { |
| | | function addMarker(id, lng, lat, name) { |
| | | console.log("function》》》》》addMarker"); |
| | | var array = JSON.parse(jsonData); |
| | | |
| | | var icon = new T.Icon({ |
| | | iconUrl: markerBluePath, |
| | | iconSize: new T.Point(27, 27), |
| | | iconAnchor: new T.Point(10, 25) |
| | | iconSize: new T.Point(28, 28), |
| | | iconAnchor: new T.Point(14, 28) |
| | | }); |
| | | array.forEach(element => { |
| | | let marker = new T.Marker( |
| | | new T.LngLat(element[0], element[1]) // 创建标注 |
| | | , { icon: icon }); |
| | | //添加点击事件 |
| | | marker.addEventListener("click", (data) => { |
| | | addMarkerListener(data) |
| | | }); |
| | | map.addOverLay(marker); // 将标注添加到地图中 |
| | | let label = new T.Label({ |
| | | text: element[2], |
| | | position: marker.getLngLat(), |
| | | offset: new T.Point(-35, 8), // 设置标注文字的位置 |
| | | opacity: 1, // 设置文本的显示不透明度(范围0-1) |
| | | }); |
| | | label.setBorderLine(0); // 设置文本的边框线宽 |
| | | label.setBackgroundColor("transparent"); // 设置文本的背景色(透明色) |
| | | label.setFontColor("#0000FF"); |
| | | label.setFontSize(10); |
| | | map.addOverLay(label); |
| | | let marker = new T.Marker( |
| | | new T.LngLat(lng, lat) // 创建标注 |
| | | , { icon: icon }); |
| | | //添加点击事件 |
| | | marker.addEventListener("click", (data) => { |
| | | addMarkerListener(id, data) |
| | | }); |
| | | map.addOverLay(marker); // 将标注添加到地图中 |
| | | let label = new T.Label({ |
| | | text: `<div style='position:absolute;left:-50%;transform: translateX(-50%);'>${name}<div>`, |
| | | 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); |
| | | map.addOverLay(label); |
| | | return "addMarker加载成功" |
| | | } |
| | | //更新定位坐标 |
| | |
| | | lineLayer.setLngLats(path); |
| | | map.addOverLay(lineLayer); |
| | | // 移动地图视角到最后一个位置 |
| | | |
| | | |
| | | // }, 500); |
| | | } |
| | | |
| | |
| | | function cleanLocationLay() { |
| | | if (lineLayer) { |
| | | map.removeOverLay(lineLayer); |
| | | path=[] |
| | | path = [] |
| | | } |
| | | if (locationMarker) { |
| | | map.removeOverLay(locationMarker); |
| | | } |
| | | if (oldLineLayer) { |
| | | aginPath=[] |
| | | aginPath = [] |
| | | map.removeOverLay(oldLineLayer); |
| | | } |
| | | } |
| | | //清除本地定位坐标位置 |
| | | function cleanLoclLay(){ |
| | | function cleanLoclLay() { |
| | | if (locationMarker) { |
| | | map.removeOverLay(locationMarker); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | //在地图上显示中心点 |
| | | var pinMarker; |
| | | function showPin() { |
| | | var icon = new T.Icon({ |
| | | iconUrl: centerPin, |
| | | iconSize: new T.Point(28, 28), |
| | | iconAnchor: new T.Point(14, 28) |
| | | }); |
| | | pinMarker = new T.Marker( |
| | | new T.LngLat(map.getCenter().getLng(), map.getCenter().getLat()) // 创建标注 |
| | | , { icon: icon }); |
| | | map.addOverLay(pinMarker); // 将标注添加到地图中 |
| | | map.addEventListener("moveend", MapMoveend); |
| | | } |
| | | |
| | | function MapMoveend(e) { |
| | | map.removeOverLay(pinMarker); |
| | | var icon = new T.Icon({ |
| | | iconUrl: centerPin, |
| | | iconSize: new T.Point(28, 28), |
| | | iconAnchor: new T.Point(14, 28) |
| | | }); |
| | | var center = e.target.getCenter(); |
| | | console.log("lng:" + center.getLng() + " lat:" + center.getLat()) |
| | | pinMarker = new T.Marker( |
| | | new T.LngLat(center.getLng(), center.getLat()) // 创建标注 |
| | | , { icon: icon }); |
| | | map.addOverLay(pinMarker); // 将标注添加到地图中 |
| | | } |
| | | |
| | | })(); |