window.onLoad = function () { var map = new AMap.Map('container'); } var url = 'https://webapi.amap.com/maps?v=1.4.15&key=c2df9f4026e98b41962148c1703d8f33&plugin=AMap.Autocomplete,AMap.PlaceSearch,AMap.Geocoder,AMap.DistrictSearch&callback=onLoad'; var jsapi = document.createElement('script'); jsapi.type = "text/javascript"; jsapi.src = url; document.head.appendChild(jsapi); let times = setInterval(() => { try { if (!!AMap) { const s = document.createElement('script'); s.type = "text/javascript"; s.src = 'https://webapi.amap.com/ui/1.1/main.js'; document.head.appendChild(s); clearInterval(times) } } catch { } }, 1000) /** * 调用高德地图执行模糊查询 * @param {Number} page 当前页 * @param {String} inputval 关键字 * @param {Function} cb 回调函数 * @param {Boolean} isMark 是否在地图上标记点 */ function AmapSearch(page, inputval, cb, isMark) { var keywords = inputval; AMap.plugin('AMap.PlaceSearch', function () { var autoOptions = { city: VagueQueryUrl, citylimit: true, pageIndex: page } var placeSearch = new AMap.PlaceSearch(autoOptions); placeSearch.search(keywords, function (status, result) { if (status != "complete") { return } var datas = result.poiList; let count = datas.count; let crupage = datas.pageIndex; let arr = datas.pois; var pointData = []; var returnObjectList = []; for (let i = 0; i < arr.length; i++) { const element = arr[i]; var xy = []; var x = element.location.lng; //经度 var y = element.location.lat; // 纬度 x = handle_x(x); y = handle_y(y); xy.push(x); xy.push(y); var returnObject = new Object(); returnObject.id = element.id; returnObject.text = element.name; returnObject.address = element.address; returnObject.XY = xy; var marksData = { "json": xy }; pointData = pointData.concat(marksData); returnObjectList.push(returnObject); } var symbol = new PictureMarkSymbolArgs(); symbol.url = "images/amap_l_gray.png"; symbol.height = 36; symbol.width = 36; symbol.yoffset = 15; symbol.xoffset = 3; if (isMark) { createMarkLayer(pointData, "vagueQueryLyr", symbol); } var resDatasObj = { keywords: keywords, page: crupage, count: count, list: returnObjectList } cb(resDatasObj); }) }) } // RoadInfoSearch() function RoadInfoSearch() { AMap.plugin('AMap.RoadInfoSearch', function () { var autoOptions = { city: VagueQueryUrl, pageSize: 100, pageIndex: 1 } var roadInfoSearch = new AMap.RoadInfoSearch(autoOptions); roadInfoSearch.crossInfoSearchByCrossId("", function (status, result) { console.log(status, result); }) }) } //经度转墨卡托 function handle_x(x) { return (x / 180.0) * 20037508.34; } //纬度度转墨卡托 function handle_y(y) { if (y > 85.05112) { y = 85.05112; } if (y < -85.05112) { y = -85.05112; } y = (Math.PI / 180.0) * y; var tmp = Math.PI / 4.0 + y / 2.0; return 20037508.34 * Math.log(Math.tan(tmp)) / Math.PI; } /** * 获取行政区域; * @param {String} val 行政区域名 * @param {Function} cb 回调函数 */ function getExtent(val, cb) { if (!val) return; var AmapCityBoundaries = {}; AMap.plugin('AMap.DistrictSearch', function () { var districtSearch = new AMap.DistrictSearch({ // 关键字对应的行政区级别,country表示国家 level: 'city', // 显示下级行政区级数,1表示返回下一级行政区 subdistrict: 1, extensions: "all" }) // 搜索所有省/直辖市信息 districtSearch.search(val, function (status, result) { let initWkid = 2360; // 默认xian80坐标系 //巴里坤的lessid 巴里坤的层级和坐标系 let blklessid = "912588c2a65543dca846"; let getblklessid = JSON.parse(sessionStorage.getItem("account")).lesseeId; if (blklessid === getblklessid) { initWkid = 102100; } // 查询成功时,result即为对应的行政区信息 if (status == "complete") { let cruExtent = result.districtList[0].center; AmapCityBoundaries.type = "point"; AmapCityBoundaries.x = handle_x(cruExtent.lng); AmapCityBoundaries.y = handle_y(cruExtent.lat); AmapCityBoundaries.spatialReference = { "wkid": initWkid }; cb(AmapCityBoundaries); } else { } }) }) } // 高德测量面积接口 function AmapGetArea(paths, callback) { var area = AMap.GeometryUtil.ringArea(paths); callback(area); }