| | |
| | | import { Component, OnInit } from '@angular/core'; |
| | | import { _HttpClient } from '@delon/theme'; |
| | | import { MapOptions, HeatmapData, HeatmapOptions, NavigationControlOptions, ControlAnchor, NavigationControlType } from 'angular2-baidu-map'; |
| | | import { ViewEncapsulation } from '@angular/compiler/src/core'; |
| | | import { BMapLib } from 'angular2-baidu-map/types/BMapLib'; |
| | | |
| | | @Component({ |
| | | selector: 'app-grid-trace', |
| | |
| | | ) { |
| | | this.options = { |
| | | minZoom: 3, |
| | | maxZoom: 13, |
| | | maxZoom: 20, |
| | | cursor: 'default', |
| | | centerAndZoom: { |
| | | lng: 121, |
| | | lat: 31.4, |
| | | zoom: 17 |
| | | zoom: 15 |
| | | }, |
| | | enableKeyboard: true |
| | | }; |
| | | } |
| | | loadMap(map: any) { |
| | | this._map = map; |
| | | this.showGrid(); |
| | | this._map.addEventListener( |
| | | 'tilesloaded', () => { |
| | | this.showGrid(); |
| | | } |
| | | ) |
| | | } |
| | | navigationOpts: NavigationControlOptions; |
| | | //热力图 |
| | | heatData: HeatmapData = { |
| | | data: [ |
| | | {"lng":121,"lat":31.4,"count":99}, |
| | | {"lng":121.02,"lat":31.38,"count":95}, |
| | | {"lng":120.96,"lat":31.39,"count":95}, |
| | | {"lng":120.99,"lat":31.399,"count":95}, |
| | | {"lng":121.002,"lat":31.392,"count":80}, |
| | | ], |
| | | max: 100 |
| | | }; |
| | |
| | | type: NavigationControlType.BMAP_NAVIGATION_CONTROL_LARGE |
| | | }; |
| | | } |
| | | //map为地图对象 |
| | | // TODO 临时 |
| | | bs() { |
| | | var bs = this._map.getBounds(); //获取当前地图范围的经纬度 |
| | | // var bssw = bs.getSouthWest(); //获取西南角的经纬度(左下端点) |
| | | // var bsne = bs.getNorthEast(); //获取东北角的经纬度(右上端点) |
| | | return { 'x1': bs.Ol.lng, 'y1': bs.Ol.lat, 'x2': bs.xl.lng, 'y2': bs.xl.lat }; |
| | | } |
| | | /** |
| | | * 显示网格 |
| | | */ |
| | | // TODO 临时 |
| | | private showGridPolygons = []; |
| | | showGrid(){ |
| | | const XY = this.bs(); |
| | | console.log(XY); |
| | | let polygons = []; |
| | | for (let i = XY.x1; i < XY.x2; i = i + 0.0063) { |
| | | for (let j = XY.y2; j > XY.y1; j = j - 0.0048) { |
| | | //此类表示绘制一个多边形覆盖物(注意:一定要下面的Point列表为多变形的顶点,描线顺序为从上到下,从左到右,顺序乱了,绘制出来的多边形也会乱,如图二所示,图二是将顶点的顺序给错了(网格左上端点,网格左下端点,网格右上端点,网格右下端点)) |
| | | const polygon = new window.BMap.Polygon([ |
| | | new window.BMap.Point(i, j), //网格左上端点 |
| | | new window.BMap.Point(i, j-0.0048), //网格左下端点 |
| | | new window.BMap.Point(i+0.0063, j-0.0048), //网格右下端点 |
| | | new window.BMap.Point(i+0.0063, j) //网格右上端点 |
| | | ], {strokeColor:"blue", strokeWeight:2, strokeOpacity:0.5, fillOpacity:0.1}); |
| | | // polygon .addEventListener("click",function clickFunction(){ |
| | | // alert("你居然敢点我"); |
| | | // }); |
| | | // _map.addOverlay(polygon); |
| | | polygons.push(polygon); |
| | | } |
| | | } |
| | | if(!!this.showGridPolygons && this.showGridPolygons.length > 0){ |
| | | this.showGridPolygons.forEach( |
| | | polygon => { |
| | | this._map.removeOverlay(polygon); |
| | | } |
| | | ); |
| | | } |
| | | // this._map.addOverlays(polygons); |
| | | polygons.forEach(polygon=>{ |
| | | this._map.addOverlay(polygon); |
| | | }); |
| | | this.showGridPolygons = polygons; |
| | | } |
| | | } |