| | |
| | | <!DOCTYPE html> |
| | | <html> |
| | | <head> |
| | | <meta charset="utf-8"> |
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge"> |
| | | <meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width"> |
| | | <meta charset="utf-8" /> |
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge" /> |
| | | <meta name="viewport" |
| | | content="initial-scale=1.0, user-scalable=no, width=device-width" /> |
| | | <title>项目列表视图</title> |
| | | <link rel="stylesheet" href="http://cache.amap.com/lbs/static/main1119.css" /> |
| | | <link rel="stylesheet" |
| | | href="http://cache.amap.com/lbs/static/main1119.css" /> |
| | | <link href="../css/public.css" rel="stylesheet" /> |
| | | <script src="http://cache.amap.com/lbs/static/es5.min.js"></script> |
| | | <script type="text/javascript" src="https://webapi.amap.com/maps?v=2.0&key=3627ed9deaac2622e26a7169f0c36b1b&plugin=AMap.Geocoder"></script> |
| | | <script type="text/javascript" |
| | | src="https://webapi.amap.com/maps?v=2.0&key=3627ed9deaac2622e26a7169f0c36b1b&plugin=AMap.Geocoder"></script> |
| | | <script src="../js/jquery-2.1.1.min.js"></script> |
| | | <script src="../js/public.js"></script> |
| | | <script src="../js/tools.js"></script> |
| | |
| | | </head> |
| | | |
| | | <body> |
| | | |
| | | <div id="container"></div> |
| | | |
| | | <div class="search-box" id="search_box"> |
| | | <input class="search-text" id="search_text" type="text" placeholder="请输入详细地址" onkeypress="keySearchAddress()" /> |
| | | <input class="search-button" id="search_button" type="button" onclick="searchAddress()" /> |
| | | <input class="search-text" |
| | | id="search_text" |
| | | type="text" |
| | | placeholder="请输入详细地址" |
| | | onkeypress="keySearchAddress()" /> |
| | | <input class="search-button" |
| | | id="search_button" |
| | | type="button" |
| | | onclick="searchAddress()" /> |
| | | </div> |
| | | |
| | | <script> |
| | | |
| | | let map;//地图对象 使用 ToolBar时,地图对象需要定义位map 否则会报错 |
| | | let _map;//地图对象 |
| | | let _layer;//图层对象 |
| | | let _callBackObj;//交互对象 |
| | | let _allProjectList = [];//所有项目列表 |
| | | let _selectedProjectOverlay = null;//选择的项目覆盖物 |
| | | let map; //地图对象 使用 ToolBar时,地图对象需要定义位map 否则会报错 |
| | | let _map; //地图对象 |
| | | let _layer; //图层对象 |
| | | let _callBackObj; //交互对象 |
| | | let _allProjectList = []; //所有项目列表 |
| | | let _selectedProjectOverlay = null; //选择的项目覆盖物 |
| | | |
| | | $(document).ready(function () { |
| | | |
| | | try { |
| | | map = _map = new AMap.Map('container', { |
| | | viewMode: '2D', //默认使用 2D 模式 |
| | | map = _map = new AMap.Map("container", { |
| | | viewMode: "2D", //默认使用 2D 模式 |
| | | resizeEnable: true, |
| | | expandZoomRange: true, |
| | | zoom: 10, |
| | |
| | | |
| | | //地图点击时关闭搜索面板 |
| | | _map.on("click", function () { |
| | | if ($("#search_text").css("display") == 'block') { |
| | | if ($("#search_text").css("display") == "block") { |
| | | $("#search_text").hide(); |
| | | } |
| | | }); |
| | | |
| | | //地图加载完成事件 |
| | | _map.on("complete", function () {//地图加载完成 |
| | | _map.on("complete", function () { |
| | | //地图加载完成 |
| | | _layer = new AMap.LabelsLayer({ |
| | | zooms: [3, 20], |
| | | zIndex: 1000, |
| | | eventSupport: true, // 图层事件支持,LabelsLayer 默认开启 |
| | | eventSupport: true, // 图层事件支持,LabelsLayer 默认开启 |
| | | fitView: true, |
| | | collision: true,// 该层内标注是否避让 |
| | | collision: true, // 该层内标注是否避让 |
| | | allowCollision: true, //不同标注层之间是否避让 |
| | | }); |
| | | _map.add(_layer); |
| | | _callBackObj = window.chrome.webview.hostObjects.callBackObj; |
| | | _callBackObj.LoadCompleted(); |
| | | }); |
| | | |
| | | } |
| | | catch (e) { |
| | | _callBackObj = window.chrome.webview.hostObjects.callBackObj |
| | | } catch (e) { |
| | | _callBackObj = window.chrome.webview.hostObjects.callBackObj; |
| | | _callBackObj.LoadFailed(); |
| | | } |
| | | }) |
| | | }); |
| | | |
| | | //设置项目列表 |
| | | function setProjectList(allProjectList) { |
| | |
| | | } |
| | | if (isEmpty(allProjectList)) { |
| | | _allProjectList = []; |
| | | } |
| | | else { |
| | | } else { |
| | | _allProjectList = allProjectList; |
| | | } |
| | | |
| | |
| | | //zIndex: 1, |
| | | // 将第一步创建的 icon 对象传给 icon 属性 |
| | | icon: { |
| | | type: 'image',// 图标类型,现阶段只支持 image 类型 |
| | | image: xhs_image_base64.project,// 图片 url |
| | | type: "image", // 图标类型,现阶段只支持 image 类型 |
| | | image: xhs_image_base64.project, // 图片 url |
| | | size: [32, 32], // 图片尺寸 |
| | | anchor: 'center',// 图片相对 position 的锚点,默认为 bottom-center |
| | | anchor: "center", // 图片相对 position 的锚点,默认为 bottom-center |
| | | }, |
| | | // 将第二步创建的 text 对象传给 text 属性 |
| | | text: { |
| | |
| | | fillColor: "#22886f", //字体颜色 |
| | | strokeColor: "#fff", //描边颜色 |
| | | strokeWidth: 2, //描边宽度 |
| | | } |
| | | } |
| | | }, |
| | | }, |
| | | }); |
| | | labelMarker.objInfo = x; |
| | | labelMarker.on("click", function (e) { |
| | |
| | | return true; |
| | | } |
| | | |
| | | function initOverlayListener(overlay) { |
| | | const id = overlay.objInfo.Id |
| | | console.log('id:', id) |
| | | // FIXME: 每次切换都会新增同样的元素, 需要优化 |
| | | const objInfoNameEleList = document.querySelectorAll(".obj-info-name-" + id); |
| | | const lastEle = objInfoNameEleList[objInfoNameEleList.length - 1]; |
| | | |
| | | lastEle?.addEventListener("click", () => { |
| | | _callBackObj.JumpSimulation(overlay.objInfo.Id); |
| | | }); |
| | | } |
| | | |
| | | //设置选择项目样式 |
| | | function setSelectProjectStyle(overlay) { |
| | | setCancelSelectProjectStyle(); |
| | | let info = []; |
| | | info.push("<div className='input-card'>"); |
| | | info.push("<label style=\"color: blue\">"); |
| | | const id = overlay.objInfo.Id |
| | | info.push( |
| | | "<label class='obj-info-name-" + id + "' style=\"color: blue;cursor:pointer\">" |
| | | ); |
| | | info.push(overlay.objInfo.Name); |
| | | info.push("</label>"); |
| | | info.push("<p class='input-item'>编号:"); |
| | |
| | | info.push("</p>"); |
| | | info.push("</div>"); |
| | | infoWindow = new AMap.InfoWindow({ |
| | | anchor: 'bottom-center', |
| | | anchor: "bottom-center", |
| | | content: info.join(""), |
| | | offset: new AMap.Pixel(0, -16) |
| | | offset: new AMap.Pixel(0, -16), |
| | | }); |
| | | |
| | | infoWindow.open(_map, overlay.getPosition()); |
| | | _selectedProjectOverlay = overlay; |
| | | _map.setFitView(overlay); |
| | | initOverlayListener(overlay); |
| | | } |
| | | |
| | | function getAllOverlaysClick(overlay) { |
| | | console.log(overlay); |
| | | } |
| | | //设置取消选择样式 |
| | | function setCancelSelectProjectStyle() { |
| | | if (_selectedProjectOverlay) { |
| | |
| | | _allProjectList = []; |
| | | } |
| | | |
| | | let project = _allProjectList.find(function (x) { return x.Id == projectId; }); |
| | | let project = _allProjectList.find(function (x) { |
| | | return x.Id == projectId; |
| | | }); |
| | | if (project) { |
| | | let allOverlays = _layer.getAllOverlays(); |
| | | let overlay = allOverlays.find(function (x) { return x.objInfo && x.objInfo.Id == projectId; }); |
| | | let overlay = allOverlays.find(function (x) { |
| | | return x.objInfo && x.objInfo.Id == projectId; |
| | | }); |
| | | if (overlay) { |
| | | setSelectProjectStyle(overlay); |
| | | } |
| | |
| | | |
| | | //设置搜索面板的可见性 |
| | | function setSearchPanelVisibility() { |
| | | document.getElementById('search_box').hidden = !document.getElementById('search_box').hidden; |
| | | document.getElementById("search_box").hidden = |
| | | !document.getElementById("search_box").hidden; |
| | | } |
| | | |
| | | //根据详细地址查看地图 |
| | |
| | | let geocoder = new AMap.Geocoder({}); |
| | | //地理编码,返回地理编码结果 |
| | | geocoder.getLocation(address, function (status, result) { |
| | | if (status === 'complete' && result.info === 'OK') { |
| | | if (status === "complete" && result.info === "OK") { |
| | | let geocode = result.geocodes; |
| | | let lnglat = [geocode[0].location.getLng(), geocode[0].location.getLat()]; |
| | | let lnglat = [ |
| | | geocode[0].location.getLng(), |
| | | geocode[0].location.getLat(), |
| | | ]; |
| | | let marker = new AMap.Marker({ position: lnglat }); |
| | | _map.setFitView(marker); |
| | | } |
| | | else { |
| | | let error = { Code: error_type.locate_address, Message: "根据详细地址定位地图失败" }; |
| | | } else { |
| | | let error = { |
| | | Code: error_type.locate_address, |
| | | Message: "根据详细地址定位地图失败", |
| | | }; |
| | | _callBackObj.HandingError(JSON.stringify(error)); |
| | | } |
| | | }); |
| | |
| | | |
| | | //搜索地址 |
| | | function searchAddress() { |
| | | if ($("#search_text").css("display") == 'block') { |
| | | |
| | | if ($("#search_text").css("display") == "block") { |
| | | let address = $("#search_text").val(); |
| | | if (!isEmpty(address)) { |
| | | |
| | | locateByAddress(address); |
| | | } |
| | | $("#search_text").hide(); |
| | | } |
| | | else { |
| | | } else { |
| | | $("#search_text").show(); |
| | | } |
| | | } |
| | |
| | | getAddressByLnglat = function (lnglat, callback) { |
| | | let geocoder = new AMap.Geocoder({}); |
| | | geocoder.getAddress(lnglat, function (status, result) { |
| | | if (status === 'complete' && result.info === 'OK') { |
| | | if (status === "complete" && result.info === "OK") { |
| | | var address = result.regeocode.formattedAddress; //返回地址描述 |
| | | callback(address); |
| | | } |
| | | else { |
| | | } else { |
| | | callback(null); |
| | | } |
| | | }); |
| | | } |
| | | }; |
| | | </script> |
| | | </body> |
| | | </html> |