From c338b90c3dad1549ddc1eac1d1e2641dc8d332fd Mon Sep 17 00:00:00 2001 From: fengxiang <110431245@qq.com> Date: Mon, 13 Aug 2018 15:44:44 +0800 Subject: [PATCH] 地图增加 网格 --- src/app/routes/grid-trace/grid-trace.component.ts | 101 ++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 96 insertions(+), 5 deletions(-) diff --git a/src/app/routes/grid-trace/grid-trace.component.ts b/src/app/routes/grid-trace/grid-trace.component.ts index 10972ac..5180555 100644 --- a/src/app/routes/grid-trace/grid-trace.component.ts +++ b/src/app/routes/grid-trace/grid-trace.component.ts @@ -1,17 +1,108 @@ import { Component, OnInit } from '@angular/core'; import { _HttpClient } from '@delon/theme'; +import { MapOptions, HeatmapData, HeatmapOptions, NavigationControlOptions, ControlAnchor, NavigationControlType } from 'angular2-baidu-map'; @Component({ selector: 'app-grid-trace', templateUrl: './grid-trace.component.html', }) export class GridTraceComponent implements OnInit { - + options: MapOptions; + private _map: any; constructor( private http: _HttpClient - ) { } - - ngOnInit() { + ) { + this.options = { + minZoom: 3, + maxZoom: 20, + cursor: 'default', + centerAndZoom: { + lng: 121, + lat: 31.4, + 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":120.99,"lat":31.399,"count":95}, + {"lng":121.002,"lat":31.392,"count":80}, + ], + max: 100 + }; + heatOption: HeatmapOptions = { + radius: 100 + }; + heatmapOverlay :any; + /** + * loadHeatmap + */ + public loadHeatmap(heatmapOverlay) { + this.heatmapOverlay = heatmapOverlay; + } + ngOnInit() { + this.navigationOpts = { + anchor: ControlAnchor.BMAP_ANCHOR_BOTTOM_RIGHT, + 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; + } } -- Gitblit v1.8.0