mirror of https://gitee.com/antv-l7/antv-l7
refactor: iE 11 打包支持
This commit is contained in:
parent
4ba3d50ab8
commit
92b898ba28
|
@ -44,7 +44,7 @@ module.exports = api => {
|
||||||
{
|
{
|
||||||
// https://babeljs.io/docs/en/babel-preset-env#usebuiltins
|
// https://babeljs.io/docs/en/babel-preset-env#usebuiltins
|
||||||
// useBuiltIns: 'usage',
|
// useBuiltIns: 'usage',
|
||||||
...isCDNBundle ? { corejs: '3.0.0' } : {},
|
...isCDNBundle ? { corejs: '2.0.0' } : {},
|
||||||
useBuiltIns: isCDNBundle ? 'usage' : false,
|
useBuiltIns: isCDNBundle ? 'usage' : false,
|
||||||
// set `modules: false` when building CDN bundle, let rollup do commonjs works
|
// set `modules: false` when building CDN bundle, let rollup do commonjs works
|
||||||
// @see https://github.com/rollup/rollup-plugin-babel#modules
|
// @see https://github.com/rollup/rollup-plugin-babel#modules
|
||||||
|
@ -69,7 +69,7 @@ module.exports = api => {
|
||||||
'@babel/plugin-proposal-optional-chaining',
|
'@babel/plugin-proposal-optional-chaining',
|
||||||
'@babel/plugin-proposal-nullish-coalescing-operator',
|
'@babel/plugin-proposal-nullish-coalescing-operator',
|
||||||
'@babel/plugin-syntax-async-generators',
|
'@babel/plugin-syntax-async-generators',
|
||||||
'@babel/plugin-transform-parameters',
|
// '@babel/plugin-transform-parameters',
|
||||||
'transform-node-env-inline',
|
'transform-node-env-inline',
|
||||||
[
|
[
|
||||||
'@babel/plugin-proposal-decorators',
|
'@babel/plugin-proposal-decorators',
|
||||||
|
@ -116,7 +116,8 @@ module.exports = api => {
|
||||||
// isCDNBundle ? 'inline-webgl-constants' : {},
|
// isCDNBundle ? 'inline-webgl-constants' : {},
|
||||||
],
|
],
|
||||||
ignore: [
|
ignore: [
|
||||||
// /node_modules\/(?![d3*])/,
|
// /node_modules\/(?![kdbush|supercluster|async])/,
|
||||||
|
'node_modules',
|
||||||
...!isTest ? [
|
...!isTest ? [
|
||||||
'**/*.test.tsx',
|
'**/*.test.tsx',
|
||||||
'**/*.test.ts',
|
'**/*.test.ts',
|
||||||
|
|
|
@ -36,6 +36,7 @@
|
||||||
"@types/node": "^12.12.22",
|
"@types/node": "^12.12.22",
|
||||||
"@types/storybook__react": "^4.0.2",
|
"@types/storybook__react": "^4.0.2",
|
||||||
"@types/supercluster": "^5.0.1",
|
"@types/supercluster": "^5.0.1",
|
||||||
|
"async-es": "^3.2.0",
|
||||||
"awesome-typescript-loader": "^5.2.1",
|
"awesome-typescript-loader": "^5.2.1",
|
||||||
"babel-jest": "^24.9.0",
|
"babel-jest": "^24.9.0",
|
||||||
"babel-loader": "^8.0.6",
|
"babel-loader": "^8.0.6",
|
||||||
|
@ -177,7 +178,7 @@
|
||||||
},
|
},
|
||||||
"resolutions": {
|
"resolutions": {
|
||||||
"../core-js": "3",
|
"../core-js": "3",
|
||||||
"d3-array": "2.3.3"
|
"d3-array": "1"
|
||||||
},
|
},
|
||||||
"tnpm": {
|
"tnpm": {
|
||||||
"mode": "yarn"
|
"mode": "yarn"
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
// tslint:disable-next-line:no-submodule-imports
|
// tslint:disable-next-line:no-submodule-imports
|
||||||
import parallel from 'async/parallel';
|
import async from 'async/dist/async.js';
|
||||||
import { CallBack } from './IHook';
|
import { CallBack } from './IHook';
|
||||||
export default class AsyncParallelHook {
|
export default class AsyncParallelHook {
|
||||||
private tasks: any[];
|
private tasks: any[];
|
||||||
|
@ -9,7 +9,18 @@ export default class AsyncParallelHook {
|
||||||
}
|
}
|
||||||
|
|
||||||
public promise(...args: any[]) {
|
public promise(...args: any[]) {
|
||||||
return parallel(this.tasks);
|
return new Promise((resolve, reject) => {
|
||||||
|
async.parallel(this.tasks).then((res: any, err: any) => {
|
||||||
|
if (err) {
|
||||||
|
reject(err);
|
||||||
|
}
|
||||||
|
resolve();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// return async.parallel(this.tasks).then((err, res) => {
|
||||||
|
// return new Promise(r);
|
||||||
|
// });
|
||||||
}
|
}
|
||||||
public tapPromise(name: string, cb: CallBack) {
|
public tapPromise(name: string, cb: CallBack) {
|
||||||
this.tasks.push(async (callback: any) => {
|
this.tasks.push(async (callback: any) => {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
// tslint:disable-next-line:no-submodule-imports
|
// tslint:disable-next-line:no-submodule-imports
|
||||||
import series from 'async/series';
|
import async from 'async/dist/async.js';
|
||||||
import { CallBack, IHook } from './IHook';
|
import { CallBack, IHook } from './IHook';
|
||||||
export default class SyncBailHook implements IHook {
|
export default class SyncBailHook implements IHook {
|
||||||
private tasks: any[];
|
private tasks: any[];
|
||||||
|
@ -8,8 +8,8 @@ export default class SyncBailHook implements IHook {
|
||||||
this.tasks = [];
|
this.tasks = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
public call(...args: any[]) {
|
public call(...args: any[]): void {
|
||||||
return series(this.tasks);
|
return async.series(this.tasks);
|
||||||
}
|
}
|
||||||
public tap(name: string, cb: CallBack) {
|
public tap(name: string, cb: CallBack) {
|
||||||
this.tasks.push((callback: any) => {
|
this.tasks.push((callback: any) => {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
// tslint:disable-next-line: no-submodule-imports
|
// tslint:disable-next-line:no-submodule-imports
|
||||||
import series from 'async/series';
|
import async from 'async/dist/async.js';
|
||||||
import { CallBack, IHook } from './IHook';
|
import { CallBack, IHook } from './IHook';
|
||||||
export default class SyncHook implements IHook {
|
export default class SyncHook implements IHook {
|
||||||
private tasks: any[];
|
private tasks: any[];
|
||||||
|
@ -9,9 +9,9 @@ export default class SyncHook implements IHook {
|
||||||
this.tasks = [];
|
this.tasks = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
public call(...args: any[]) {
|
public call(...args: any[]): void {
|
||||||
this.args = args;
|
this.args = args;
|
||||||
return series(this.tasks);
|
return async.series(this.tasks);
|
||||||
}
|
}
|
||||||
public tap(name: string, cb: CallBack) {
|
public tap(name: string, cb: CallBack) {
|
||||||
this.tasks.push((callback: any) => {
|
this.tasks.push((callback: any) => {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
// tslint:disable-next-line:no-submodule-imports
|
// tslint:disable-next-line:no-submodule-imports
|
||||||
import waterfall from 'async/waterfall';
|
import async from 'async/dist/async.js';
|
||||||
import { CallBack, IHook } from './IHook';
|
import { CallBack, IHook } from './IHook';
|
||||||
export default class SyncWaterfallHook implements IHook {
|
export default class SyncWaterfallHook implements IHook {
|
||||||
private tasks: any[];
|
private tasks: any[];
|
||||||
|
@ -8,8 +8,8 @@ export default class SyncWaterfallHook implements IHook {
|
||||||
this.tasks = [];
|
this.tasks = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
public call(...args: any[]) {
|
public call(...args: any[]): void {
|
||||||
return waterfall(this.tasks);
|
return async.waterfall(this.tasks);
|
||||||
}
|
}
|
||||||
public tap(name: string, cb: CallBack) {
|
public tap(name: string, cb: CallBack) {
|
||||||
if (this.tasks.length === 0) {
|
if (this.tasks.length === 0) {
|
||||||
|
|
|
@ -4,7 +4,6 @@
|
||||||
"declarationDir": "./es",
|
"declarationDir": "./es",
|
||||||
"rootDir": "./src",
|
"rootDir": "./src",
|
||||||
"baseUrl": "./",
|
"baseUrl": "./",
|
||||||
"target": "es6",
|
|
||||||
},
|
},
|
||||||
"include": ["./src"]
|
"include": ["./src"]
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,9 @@ import {
|
||||||
import { EventEmitter } from 'eventemitter3';
|
import { EventEmitter } from 'eventemitter3';
|
||||||
import { Container } from 'inversify';
|
import { Container } from 'inversify';
|
||||||
import { merge } from 'lodash';
|
import { merge } from 'lodash';
|
||||||
import Supercluster from 'supercluster';
|
// @ts-ignore
|
||||||
|
// tslint:disable-next-line:no-submodule-imports
|
||||||
|
import Supercluster from 'supercluster/dist/supercluster';
|
||||||
import Marker from './marker';
|
import Marker from './marker';
|
||||||
type CallBack = (...args: any[]) => any;
|
type CallBack = (...args: any[]) => any;
|
||||||
interface IMarkerStyleOption {
|
interface IMarkerStyleOption {
|
||||||
|
@ -150,20 +152,20 @@ export default class MarkerLayer extends EventEmitter {
|
||||||
}
|
}
|
||||||
|
|
||||||
private getClusterMarker(viewBounds: IBounds, zoom: number) {
|
private getClusterMarker(viewBounds: IBounds, zoom: number) {
|
||||||
const viewBBox = viewBounds[0].concat(viewBounds[1]) as GeoJSON.BBox;
|
const viewBBox = viewBounds[0].concat(viewBounds[1]);
|
||||||
const clusterPoint = this.clusterIndex.getClusters(viewBBox, zoom);
|
const clusterPoint = this.clusterIndex.getClusters(viewBBox, zoom);
|
||||||
this.clusterMarkers.forEach((marker: IMarker) => {
|
this.clusterMarkers.forEach((marker: IMarker) => {
|
||||||
marker.remove();
|
marker.remove();
|
||||||
});
|
});
|
||||||
this.clusterMarkers = [];
|
this.clusterMarkers = [];
|
||||||
clusterPoint.forEach((feature) => {
|
clusterPoint.forEach((feature: any) => {
|
||||||
const { field, method } = this.markerLayerOption.clusterOption;
|
const { field, method } = this.markerLayerOption.clusterOption;
|
||||||
// 处理聚合数据
|
// 处理聚合数据
|
||||||
if (feature.properties && feature.properties?.cluster_id) {
|
if (feature.properties && feature.properties?.cluster_id) {
|
||||||
const clusterData = this.getLeaves(feature.properties?.cluster_id);
|
const clusterData = this.getLeaves(feature.properties?.cluster_id);
|
||||||
feature.properties.clusterData = clusterData;
|
feature.properties.clusterData = clusterData;
|
||||||
if (field && method) {
|
if (field && method) {
|
||||||
const columnData = clusterData?.map((item) => {
|
const columnData = clusterData?.map((item: any) => {
|
||||||
const data = {
|
const data = {
|
||||||
[field]: item.properties[field],
|
[field]: item.properties[field],
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
import { injectable } from 'inversify';
|
import { injectable } from 'inversify';
|
||||||
import Probe, { Log } from 'probe.gl';
|
import Probe, { Log } from 'probe.gl';
|
||||||
import { ILogService } from './ILogService';
|
import { ILogService } from './ILogService';
|
||||||
|
// !process.env.NODE_ENV === 'production',
|
||||||
const Logger = new Log({ id: 'L7' }).enable(
|
const Logger = new Log({ id: 'L7' }).enable(
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
!process.env.NODE_ENV === 'production',
|
process.env.NODE_ENV !== 'production',
|
||||||
);
|
);
|
||||||
// // 只输出 debug 级别以上的日志信息
|
// // 只输出 debug 级别以上的日志信息
|
||||||
Logger.priority = 5;
|
Logger.priority = 5;
|
||||||
|
|
|
@ -187,9 +187,8 @@ export default class Scene extends EventEmitter implements ISceneService {
|
||||||
// TODO:init worker, fontAtlas...
|
// TODO:init worker, fontAtlas...
|
||||||
|
|
||||||
// 执行异步并行初始化任务
|
// 执行异步并行初始化任务
|
||||||
this.initPromise = this.hooks.init.promise(
|
// @ts-ignore
|
||||||
this.configService.getSceneConfig(this.id),
|
this.initPromise = this.hooks.init.promise();
|
||||||
);
|
|
||||||
|
|
||||||
this.render();
|
this.render();
|
||||||
}
|
}
|
||||||
|
@ -209,10 +208,9 @@ export default class Scene extends EventEmitter implements ISceneService {
|
||||||
// 首次初始化,或者地图的容器被强制销毁的需要重新初始化
|
// 首次初始化,或者地图的容器被强制销毁的需要重新初始化
|
||||||
if (!this.inited) {
|
if (!this.inited) {
|
||||||
// 还未初始化完成需要等待
|
// 还未初始化完成需要等待
|
||||||
|
|
||||||
await this.initPromise;
|
await this.initPromise;
|
||||||
// FIXME: 初始化 marker 容器,可以放到 map 初始化方法中?
|
|
||||||
|
|
||||||
|
// FIXME: 初始化 marker 容器,可以放到 map 初始化方法中?
|
||||||
this.logger.info(' render inited');
|
this.logger.info(' render inited');
|
||||||
this.layerService.initLayers();
|
this.layerService.initLayers();
|
||||||
this.controlService.addControls();
|
this.controlService.addControls();
|
||||||
|
|
|
@ -63,10 +63,10 @@ vec3 project_offset_normal(vec3 vector) {
|
||||||
}
|
}
|
||||||
return project_normal(vector);
|
return project_normal(vector);
|
||||||
}
|
}
|
||||||
|
// || u_CoordinateSystem < COORDINATE_SYSTEM_P20_OFFSET + 0.01 && u_CoordinateSystem >COORDINATE_SYSTEM_P20_OFFSET - 0.01
|
||||||
// reverse Y
|
// reverse Y
|
||||||
vec3 reverse_offset_normal(vec3 vector) {
|
vec3 reverse_offset_normal(vec3 vector) {
|
||||||
if (u_CoordinateSystem == COORDINATE_SYSTEM_P20) {
|
if (u_CoordinateSystem == COORDINATE_SYSTEM_P20 ||u_CoordinateSystem == COORDINATE_SYSTEM_P20_OFFSET ) {
|
||||||
return vector * vec3(1.0, -1.0, 1.0);
|
return vector * vec3(1.0, -1.0, 1.0);
|
||||||
}
|
}
|
||||||
return vector;
|
return vector;
|
||||||
|
|
|
@ -23,10 +23,9 @@
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="map"></div>
|
<div id="map"></div>
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/7.8.3/polyfill.min.js"></script>
|
|
||||||
<!-- <script src="https://cdn.jsdelivr.net/npm/symbol-es6@0.1.2/symbol-es6.min.js"></script> -->
|
|
||||||
<script src="https://api.mapbox.com/mapbox-gl-js/v1.8.0/mapbox-gl.js"></script>
|
|
||||||
|
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/7.8.3/polyfill.min.js"></script>
|
||||||
|
<script src="https://api.mapbox.com/mapbox-gl-js/v1.8.0/mapbox-gl.js"></script>
|
||||||
<script src="../dist/l7-dev.js"></script>
|
<script src="../dist/l7-dev.js"></script>
|
||||||
<script>
|
<script>
|
||||||
console.log(L7);
|
console.log(L7);
|
||||||
|
@ -36,14 +35,14 @@
|
||||||
style: "dark", // 样式URL
|
style: "dark", // 样式URL
|
||||||
center: [108.6167, 19.1000],
|
center: [108.6167, 19.1000],
|
||||||
pitch: 0,
|
pitch: 0,
|
||||||
zoom: 13
|
zoom: 6
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
const data = {"list":[{"w":19.1000,"t":24.6000,"s":"海南","l":11,"m":"东方","j":108.6167,"h":"59838"},{"w":20.0000,"t":23.8000,"s":"海南","l":11,"m":"海口","j":110.2500,"h":"59758"},{"w":22.2750,"t":23.6000,"s":"广东","l":12,"m":"珠海","j":113.5669,"h":"59488"},{"w":20.3372,"t":23.4000,"s":"广东","l":12,"m":"徐闻","j":110.1794,"h":"59754"},{"w":19.2089,"t":23.2000,"s":"海南","l":12,"m":"琼海","j":110.4819,"h":"59855"},{"w":21.7358,"t":23.2000,"s":"广东","l":11,"m":"上川岛","j":112.7731,"h":"59673"},{"w":23.3853,"t":23.0000,"s":"广东","l":11,"m":"汕头","j":116.6792,"h":"59316"},{"w":22.5417,"t":23.0000,"s":"广东","l":12,"m":"深圳","j":114.0033,"h":"59493"},{"w":19.5167,"t":22.9000,"s":"海南","l":12,"m":"儋州","j":109.5833,"h":"59845"},{"w":21.1547,"t":22.7000,"s":"广东","l":12,"m":"湛江","j":110.3022,"h":"59658"},{"w":21.4500,"t":22.7000,"s":"广西","l":12,"m":"北海","j":109.1333,"h":"59644"},{"w":22.5000,"t":22.6000,"s":"广东","l":12,"m":"中山","j":113.4000,"h":"59485"},{"w":21.8453,"t":22.6000,"s":"广东","l":12,"m":"阳江","j":111.9783,"h":"59663"},{"w":22.3469,"t":22.6000,"s":"广东","l":12,"m":"信宜","j":110.9250,"h":"59456"},{"w":22.8000,"t":22.5000,"s":"广东","l":12,"m":"汕尾","j":115.3667,"h":"59501"},{"w":23.4275,"t":22.3000,"s":"广东","l":12,"m":"南澳","j":117.0292,"h":"59324"},{"w":22.7100,"t":22.3000,"s":"广东","l":12,"m":"罗定","j":111.6000,"h":"59462"},{"w":19.0333,"t":22.3000,"s":"海南","l":12,"m":"琼中","j":109.8333,"h":"59849"},{"w":21.5458,"t":22.2000,"s":"广东","l":11,"m":"电白","j":110.9886,"h":"59664"},{"w":22.9661,"t":21.9000,"s":"广东","l":12,"m":"东莞","j":113.7389,"h":"59289"},{"w":22.2472,"t":21.8000,"s":"广东","l":12,"m":"台山","j":112.7858,"h":"59478"},{"w":22.9836,"t":21.6000,"s":"广东","l":12,"m":"惠来","j":116.3014,"h":"59317"},{"w":22.9906,"t":21.0000,"s":"广东","l":12,"m":"高要","j":112.4786,"h":"59278"},{"w":23.9000,"t":20.8000,"s":"广西","l":12,"m":"百色","j":106.6000,"h":"59211"},{"w":23.0711,"t":20.4000,"s":"广东","l":12,"m":"惠阳","j":114.3744,"h":"59298"},{"w":23.4497,"t":20.4000,"s":"广东","l":12,"m":"揭西","j":115.8492,"h":"59306"},{"w":23.3353,"t":20.4000,"s":"广东","l":11,"m":"增城","j":113.8275,"h":"59294"},{"w":23.4167,"t":19.9000,"s":"广西","l":12,"m":"那坡","j":105.8333,"h":"59209"},{"w":24.9000,"t":19.7000,"s":"福建","l":11,"m":"崇武","j":118.9167,"h":"59133"},{"w":24.4833,"t":19.7000,"s":"福建","l":12,"m":"厦门","j":118.0667,"h":"59134"},{"w":23.7936,"t":19.6000,"s":"广东","l":12,"m":"河源","j":114.7297,"h":"59293"},{"w":23.7106,"t":19.4000,"s":"广东","l":12,"m":"清远","j":113.0850,"h":"59280"},{"w":23.1000,"t":19.4000,"s":"广西","l":12,"m":"靖西","j":106.4500,"h":"59218"},{"w":23.6000,"t":19.4000,"s":"广西","l":13,"m":"田东","j":107.1167,"h":"59224"},{"w":25.5167,"t":19.2000,"s":"福建","l":12,"m":"平潭","j":119.7833,"h":"58944"},{"w":25.0500,"t":19.2000,"s":"福建","l":12,"m":"龙岩","j":117.0167,"h":"58927"},{"w":23.2100,"t":19.0000,"s":"广东","l":12,"m":"广州","j":113.4822,"h":"59287"},{"w":21.9833,"t":18.9000,"s":"广西","l":12,"m":"钦州","j":108.6000,"h":"59632"}]}
|
const data = {"list":[{"w":19.1000,"t":24.6000,"s":"海南","l":11,"m":"东方","j":108.6167,"h":"59838"},{"w":20.0000,"t":23.8000,"s":"海南","l":11,"m":"海口","j":110.2500,"h":"59758"},{"w":22.2750,"t":23.6000,"s":"广东","l":12,"m":"珠海","j":113.5669,"h":"59488"},{"w":20.3372,"t":23.4000,"s":"广东","l":12,"m":"徐闻","j":110.1794,"h":"59754"},{"w":19.2089,"t":23.2000,"s":"海南","l":12,"m":"琼海","j":110.4819,"h":"59855"},{"w":21.7358,"t":23.2000,"s":"广东","l":11,"m":"上川岛","j":112.7731,"h":"59673"},{"w":23.3853,"t":23.0000,"s":"广东","l":11,"m":"汕头","j":116.6792,"h":"59316"},{"w":22.5417,"t":23.0000,"s":"广东","l":12,"m":"深圳","j":114.0033,"h":"59493"},{"w":19.5167,"t":22.9000,"s":"海南","l":12,"m":"儋州","j":109.5833,"h":"59845"},{"w":21.1547,"t":22.7000,"s":"广东","l":12,"m":"湛江","j":110.3022,"h":"59658"},{"w":21.4500,"t":22.7000,"s":"广西","l":12,"m":"北海","j":109.1333,"h":"59644"},{"w":22.5000,"t":22.6000,"s":"广东","l":12,"m":"中山","j":113.4000,"h":"59485"},{"w":21.8453,"t":22.6000,"s":"广东","l":12,"m":"阳江","j":111.9783,"h":"59663"},{"w":22.3469,"t":22.6000,"s":"广东","l":12,"m":"信宜","j":110.9250,"h":"59456"},{"w":22.8000,"t":22.5000,"s":"广东","l":12,"m":"汕尾","j":115.3667,"h":"59501"},{"w":23.4275,"t":22.3000,"s":"广东","l":12,"m":"南澳","j":117.0292,"h":"59324"},{"w":22.7100,"t":22.3000,"s":"广东","l":12,"m":"罗定","j":111.6000,"h":"59462"},{"w":19.0333,"t":22.3000,"s":"海南","l":12,"m":"琼中","j":109.8333,"h":"59849"},{"w":21.5458,"t":22.2000,"s":"广东","l":11,"m":"电白","j":110.9886,"h":"59664"},{"w":22.9661,"t":21.9000,"s":"广东","l":12,"m":"东莞","j":113.7389,"h":"59289"},{"w":22.2472,"t":21.8000,"s":"广东","l":12,"m":"台山","j":112.7858,"h":"59478"},{"w":22.9836,"t":21.6000,"s":"广东","l":12,"m":"惠来","j":116.3014,"h":"59317"},{"w":22.9906,"t":21.0000,"s":"广东","l":12,"m":"高要","j":112.4786,"h":"59278"},{"w":23.9000,"t":20.8000,"s":"广西","l":12,"m":"百色","j":106.6000,"h":"59211"},{"w":23.0711,"t":20.4000,"s":"广东","l":12,"m":"惠阳","j":114.3744,"h":"59298"},{"w":23.4497,"t":20.4000,"s":"广东","l":12,"m":"揭西","j":115.8492,"h":"59306"},{"w":23.3353,"t":20.4000,"s":"广东","l":11,"m":"增城","j":113.8275,"h":"59294"},{"w":23.4167,"t":19.9000,"s":"广西","l":12,"m":"那坡","j":105.8333,"h":"59209"},{"w":24.9000,"t":19.7000,"s":"福建","l":11,"m":"崇武","j":118.9167,"h":"59133"},{"w":24.4833,"t":19.7000,"s":"福建","l":12,"m":"厦门","j":118.0667,"h":"59134"},{"w":23.7936,"t":19.6000,"s":"广东","l":12,"m":"河源","j":114.7297,"h":"59293"},{"w":23.7106,"t":19.4000,"s":"广东","l":12,"m":"清远","j":113.0850,"h":"59280"},{"w":23.1000,"t":19.4000,"s":"广西","l":12,"m":"靖西","j":106.4500,"h":"59218"},{"w":23.6000,"t":19.4000,"s":"广西","l":13,"m":"田东","j":107.1167,"h":"59224"},{"w":25.5167,"t":19.2000,"s":"福建","l":12,"m":"平潭","j":119.7833,"h":"58944"},{"w":25.0500,"t":19.2000,"s":"福建","l":12,"m":"龙岩","j":117.0167,"h":"58927"},{"w":23.2100,"t":19.0000,"s":"广东","l":12,"m":"广州","j":113.4822,"h":"59287"},{"w":21.9833,"t":18.9000,"s":"广西","l":12,"m":"钦州","j":108.6000,"h":"59632"}]}
|
||||||
|
|
||||||
|
scene.on('loaded',function(){
|
||||||
const pointLayer = new L7.PointLayer({})
|
const pointLayer = new L7.PointLayer({})
|
||||||
.source(data.list, {
|
.source(data.list, {
|
||||||
parser: {
|
parser: {
|
||||||
type: "json",
|
type: "json",
|
||||||
|
@ -68,7 +67,15 @@
|
||||||
.style({
|
.style({
|
||||||
opacity: 1.0
|
opacity: 1.0
|
||||||
});
|
});
|
||||||
|
|
||||||
scene.addLayer(pointLayer);
|
scene.addLayer(pointLayer);
|
||||||
|
pointLayer.on('inited',function(){
|
||||||
|
console.log('加载完成');
|
||||||
|
})
|
||||||
|
scene.render();
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -29,9 +29,9 @@
|
||||||
"@babel/runtime": "^7.7.7",
|
"@babel/runtime": "^7.7.7",
|
||||||
"@mapbox/martini": "^0.1.0",
|
"@mapbox/martini": "^0.1.0",
|
||||||
"@turf/meta": "^6.0.2",
|
"@turf/meta": "^6.0.2",
|
||||||
"d3-array": "2.3.3",
|
"d3-array": "1",
|
||||||
"d3-color": "^1.4.0",
|
"d3-color": "^1.4.0",
|
||||||
"d3-scale": "^3.1.0",
|
"d3-scale": "2",
|
||||||
"earcut": "^2.2.1",
|
"earcut": "^2.2.1",
|
||||||
"eventemitter3": "^4.0.0",
|
"eventemitter3": "^4.0.0",
|
||||||
"gl-matrix": "^3.1.0",
|
"gl-matrix": "^3.1.0",
|
||||||
|
|
|
@ -304,7 +304,6 @@ export default class BaseLayer<ChildLayerStyleOptions = {}> extends EventEmitter
|
||||||
|
|
||||||
// 触发 init 生命周期插件
|
// 触发 init 生命周期插件
|
||||||
this.hooks.init.call();
|
this.hooks.init.call();
|
||||||
|
|
||||||
// this.pickingPassRender = this.normalPassFactory('pixelPicking');
|
// this.pickingPassRender = this.normalPassFactory('pixelPicking');
|
||||||
// this.pickingPassRender.init(this);
|
// this.pickingPassRender.init(this);
|
||||||
this.hooks.afterInit.call();
|
this.hooks.afterInit.call();
|
||||||
|
@ -525,6 +524,7 @@ export default class BaseLayer<ChildLayerStyleOptions = {}> extends EventEmitter
|
||||||
});
|
});
|
||||||
this.hooks.beforeSelect
|
this.hooks.beforeSelect
|
||||||
.call(encodePickingColor(id as number) as number[])
|
.call(encodePickingColor(id as number) as number[])
|
||||||
|
// @ts-ignore
|
||||||
.then(() => {
|
.then(() => {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
this.reRender();
|
this.reRender();
|
||||||
|
@ -569,6 +569,7 @@ export default class BaseLayer<ChildLayerStyleOptions = {}> extends EventEmitter
|
||||||
});
|
});
|
||||||
this.hooks.beforeSelect
|
this.hooks.beforeSelect
|
||||||
.call(encodePickingColor(id as number) as number[])
|
.call(encodePickingColor(id as number) as number[])
|
||||||
|
// @ts-ignore
|
||||||
.then(() => {
|
.then(() => {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
this.reRender();
|
this.reRender();
|
||||||
|
|
|
@ -38,7 +38,7 @@ void main() {
|
||||||
}
|
}
|
||||||
v_normal = vec2(reverse_offset_normal(a_Normal) * sign(a_Miter));
|
v_normal = vec2(reverse_offset_normal(a_Normal) * sign(a_Miter));
|
||||||
v_color = a_Color;
|
v_color = a_Color;
|
||||||
vec3 size = a_Miter * a_Size.x * reverse_offset_normal(a_Normal); //v_normal * vec3(1., -1., 1.0);
|
vec3 size = a_Miter * a_Size.x * reverse_offset_normal(a_Normal);
|
||||||
vec2 offset = project_pixel(size.xy);
|
vec2 offset = project_pixel(size.xy);
|
||||||
v_side = a_Miter * a_Size.x;
|
v_side = a_Miter * a_Size.x;
|
||||||
vec4 project_pos = project_position(vec4(a_Position.xy, 0, 1.0));
|
vec4 project_pos = project_position(vec4(a_Position.xy, 0, 1.0));
|
||||||
|
|
|
@ -10,9 +10,6 @@ export default class DataSourcePlugin implements ILayerPlugin {
|
||||||
layer.hooks.init.tap('DataSourcePlugin', () => {
|
layer.hooks.init.tap('DataSourcePlugin', () => {
|
||||||
const { data, options } = layer.sourceOption;
|
const { data, options } = layer.sourceOption;
|
||||||
layer.setSource(new Source(data, options));
|
layer.setSource(new Source(data, options));
|
||||||
// if (layer.getSource().data.dataArray.length === 0) {
|
|
||||||
// return true;
|
|
||||||
// }
|
|
||||||
this.updateClusterData(layer);
|
this.updateClusterData(layer);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,7 @@ export default class UpdateModelPlugin implements ILayerPlugin {
|
||||||
layer.hooks.beforeRender.tap('UpdateModelPlugin', () => {
|
layer.hooks.beforeRender.tap('UpdateModelPlugin', () => {
|
||||||
// 处理文本更新
|
// 处理文本更新
|
||||||
if (layer.layerModel) {
|
if (layer.layerModel) {
|
||||||
|
// console.log(layer.layerModelNeedUpdate);
|
||||||
layer.layerModel.needUpdate();
|
layer.layerModel.needUpdate();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -13,6 +13,6 @@ export default React.memo(function Chart(props: ILayerProps) {
|
||||||
if (filter.field) {
|
if (filter.field) {
|
||||||
layer.filter(filter.field as string, filter.values as StyleAttrField);
|
layer.filter(filter.field as string, filter.values as StyleAttrField);
|
||||||
}
|
}
|
||||||
}, [filter.field, JSON.stringify(filter.values)]);
|
}, [filter.field, filter.values, JSON.stringify(filter.values)]);
|
||||||
return null;
|
return null;
|
||||||
});
|
});
|
||||||
|
|
|
@ -4,7 +4,6 @@
|
||||||
"declarationDir": "./es",
|
"declarationDir": "./es",
|
||||||
"rootDir": "./src",
|
"rootDir": "./src",
|
||||||
"baseUrl": "./",
|
"baseUrl": "./",
|
||||||
"target": "es6",
|
|
||||||
},
|
},
|
||||||
"include": ["./src"]
|
"include": ["./src"]
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,9 +20,10 @@ import {
|
||||||
Properties,
|
Properties,
|
||||||
} from '@turf/helpers';
|
} from '@turf/helpers';
|
||||||
import { EventEmitter } from 'eventemitter3';
|
import { EventEmitter } from 'eventemitter3';
|
||||||
import { Container } from 'inversify';
|
|
||||||
import { cloneDeep, isFunction, isString } from 'lodash';
|
import { cloneDeep, isFunction, isString } from 'lodash';
|
||||||
import Supercluster from 'supercluster';
|
// @ts-ignore
|
||||||
|
// tslint:disable-next-line:no-submodule-imports
|
||||||
|
import Supercluster from 'supercluster/dist/supercluster';
|
||||||
import { getParser, getTransform } from './';
|
import { getParser, getTransform } from './';
|
||||||
import { statMap } from './utils/statistics';
|
import { statMap } from './utils/statistics';
|
||||||
import { getColumn } from './utils/util';
|
import { getColumn } from './utils/util';
|
||||||
|
@ -101,17 +102,17 @@ export default class Source extends EventEmitter {
|
||||||
const { method = 'sum', field } = this.clusterOptions;
|
const { method = 'sum', field } = this.clusterOptions;
|
||||||
let data = this.clusterIndex.getClusters(this.extent, zoom);
|
let data = this.clusterIndex.getClusters(this.extent, zoom);
|
||||||
this.clusterOptions.zoom = zoom;
|
this.clusterOptions.zoom = zoom;
|
||||||
data.forEach((p) => {
|
data.forEach((p: any) => {
|
||||||
if (!p.id) {
|
if (!p.id) {
|
||||||
p.properties.point_count = 1;
|
p.properties.point_count = 1;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
if (field || isFunction(method)) {
|
if (field || isFunction(method)) {
|
||||||
data = data.map((item) => {
|
data = data.map((item: any) => {
|
||||||
const id = item.id as number;
|
const id = item.id as number;
|
||||||
if (id) {
|
if (id) {
|
||||||
const points = this.clusterIndex.getLeaves(id, Infinity);
|
const points = this.clusterIndex.getLeaves(id, Infinity);
|
||||||
const properties = points.map((d) => d.properties);
|
const properties = points.map((d: any) => d.properties);
|
||||||
let statNum;
|
let statNum;
|
||||||
if (isString(method) && field) {
|
if (isString(method) && field) {
|
||||||
const column = getColumn(properties, field);
|
const column = getColumn(properties, field);
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
import { IParserCfg, IParserData, ISourceCFG, ITransform } from '@antv/l7-core';
|
import { IParserCfg, IParserData, ISourceCFG, ITransform } from '@antv/l7-core';
|
||||||
import Supercluster from 'supercluster';
|
// @ts-ignore
|
||||||
|
// tslint:disable-next-line:no-submodule-imports
|
||||||
|
import Supercluster from 'supercluster/dist/supercluster';
|
||||||
export function cluster(data: IParserData, option: ITransform): IParserData {
|
export function cluster(data: IParserData, option: ITransform): IParserData {
|
||||||
const { radius = 80, maxZoom = 18, minZoom = 0, field, zoom = 2 } = option;
|
const { radius = 80, maxZoom = 18, minZoom = 0, field, zoom = 2 } = option;
|
||||||
if (data.pointIndex) {
|
if (data.pointIndex) {
|
||||||
|
@ -14,8 +16,8 @@ export function cluster(data: IParserData, option: ITransform): IParserData {
|
||||||
radius,
|
radius,
|
||||||
minZoom,
|
minZoom,
|
||||||
maxZoom,
|
maxZoom,
|
||||||
map: (props) => ({ sum: props[field] }), // 根据指定字段求和
|
map: (props: any) => ({ sum: props[field] }), // 根据指定字段求和
|
||||||
reduce: (accumulated, props) => {
|
reduce: (accumulated: any, props: any) => {
|
||||||
accumulated.sum += props.sum;
|
accumulated.sum += props.sum;
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -40,7 +42,7 @@ export function cluster(data: IParserData, option: ITransform): IParserData {
|
||||||
});
|
});
|
||||||
pointIndex.load(geojson.features);
|
pointIndex.load(geojson.features);
|
||||||
const clusterPoint = pointIndex.getClusters(data.extent, zoom);
|
const clusterPoint = pointIndex.getClusters(data.extent, zoom);
|
||||||
const resultData = clusterPoint.map((point, index) => {
|
const resultData = clusterPoint.map((point: any, index: number) => {
|
||||||
return {
|
return {
|
||||||
coordinates: point.geometry.coordinates,
|
coordinates: point.geometry.coordinates,
|
||||||
_id: index + 1,
|
_id: index + 1,
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
// @ts-ignore
|
||||||
export { djb2hash, BKDRHash } from './hash';
|
export { djb2hash, BKDRHash } from './hash';
|
||||||
import * as DOM from './dom';
|
import * as DOM from './dom';
|
||||||
export * from './fetchData';
|
export * from './fetchData';
|
||||||
|
|
|
@ -3,7 +3,11 @@
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"declarationDir": "./es",
|
"declarationDir": "./es",
|
||||||
"rootDir": "./src",
|
"rootDir": "./src",
|
||||||
"baseUrl": "./"
|
"baseUrl": "./",
|
||||||
|
"moduleResolution": "Node",
|
||||||
|
"paths": {
|
||||||
|
"*": ["node_modules", "typings/*"]
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"include": ["./src"]
|
"include": ["./src"]
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import { storiesOf } from '@storybook/react';
|
import { storiesOf } from '@storybook/react';
|
||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
|
import Line from './components/line';
|
||||||
import MultiLine from './components/multiLine';
|
import MultiLine from './components/multiLine';
|
||||||
import MultiPolygon from './components/multiPolygon';
|
import MultiPolygon from './components/multiPolygon';
|
||||||
import UpdatePolygon from './components/updatedata';
|
import UpdatePolygon from './components/updatedata';
|
||||||
|
@ -9,4 +10,5 @@ import notes from './Map.md';
|
||||||
storiesOf('数据', module)
|
storiesOf('数据', module)
|
||||||
.add('multiPolygon', () => <MultiPolygon />, {})
|
.add('multiPolygon', () => <MultiPolygon />, {})
|
||||||
.add('updatePolygon', () => <UpdatePolygon />, {})
|
.add('updatePolygon', () => <UpdatePolygon />, {})
|
||||||
.add('MultiLine', () => <MultiLine />, {});
|
.add('MultiLine', () => <MultiLine />, {})
|
||||||
|
.add('折线', () => <Line />, {});
|
||||||
|
|
|
@ -0,0 +1,701 @@
|
||||||
|
import { LineLayer, Scene } from '@antv/l7';
|
||||||
|
import { GaodeMap } from '@antv/l7-maps';
|
||||||
|
import * as React from 'react';
|
||||||
|
|
||||||
|
const data = [
|
||||||
|
{
|
||||||
|
n: '南路',
|
||||||
|
lnglat: [115.789286, 28.552708],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.789273, 28.553421],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.789337, 28.558138],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '大岗',
|
||||||
|
lnglat: [115.789363, 28.56059],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.789332, 28.563834],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.789337, 28.563947],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.789343, 28.564178],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.789353, 28.564249],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.789439, 28.565144],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.790002, 28.568079],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.790684, 28.571047],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '生米',
|
||||||
|
lnglat: [115.790844, 28.571832],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.791392, 28.574256],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.792052, 28.576215],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.793023, 28.578778],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '九龙湖南',
|
||||||
|
lnglat: [115.793023, 28.578778],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.793827, 28.580743],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.793876, 28.580964],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.794412, 28.584275],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.795142, 28.589066],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.795903, 28.592264],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '市民中心',
|
||||||
|
lnglat: [115.79619, 28.593435],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.796526, 28.594803],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.796633, 28.595185],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.796767, 28.595491],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.79696, 28.595858],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.798301, 28.597959],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '鹰潭街',
|
||||||
|
lnglat: [115.799006, 28.599043],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.802067, 28.603936],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.802153, 28.604185],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.802223, 28.604416],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.802244, 28.60467],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.802239, 28.604854],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.80218, 28.605005],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.802078, 28.605155],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.801858, 28.605381],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.801552, 28.605603],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.801193, 28.605815],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '国博',
|
||||||
|
lnglat: [115.79587, 28.608219],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.789761, 28.610943],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.789375, 28.611136],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.789192, 28.611268],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.788801, 28.611659],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.78857, 28.611956],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.788372, 28.612281],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.788157, 28.612968],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.788114, 28.613194],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.788093, 28.613684],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.788195, 28.61416],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.788522, 28.614852],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '西站南广场',
|
||||||
|
lnglat: [115.790539, 28.618386],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '南昌西站',
|
||||||
|
lnglat: [115.793362, 28.623431],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.794101, 28.624802],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.794273, 28.625108],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.794407, 28.625268],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.794616, 28.625466],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.795018, 28.625786],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.795598, 28.626022],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.796161, 28.62605],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.796649, 28.625956],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '龙岗',
|
||||||
|
lnglat: [115.802987, 28.623161],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.811584, 28.619359],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.812592, 28.619217],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.813676, 28.619321],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.81455, 28.619533],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.814867, 28.619702],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.815231, 28.619966],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.815398, 28.620178],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '国体中心',
|
||||||
|
lnglat: [115.816739, 28.622378],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.821454, 28.630396],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '卧龙山',
|
||||||
|
lnglat: [115.822477, 28.631606],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.824088, 28.633306],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.827655, 28.636569],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.828578, 28.637637],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.829125, 28.638508],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.82978, 28.639944],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '岭北',
|
||||||
|
lnglat: [115.830145, 28.641038],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.83148, 28.645264],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.832676, 28.647915],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.833519, 28.649393],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '前湖大道',
|
||||||
|
lnglat: [115.834939, 28.651869],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '学府大道东',
|
||||||
|
lnglat: [115.839123, 28.659244],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '翠苑路',
|
||||||
|
lnglat: [115.846675, 28.67262],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '地铁大厦',
|
||||||
|
lnglat: [115.852386, 28.684076],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.854048, 28.686417],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.854794, 28.688695],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.855159, 28.689706],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.855572, 28.690403],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.856296, 28.691259],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '雅苑路',
|
||||||
|
lnglat: [115.857386, 28.692061],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.85937, 28.693306],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.863087, 28.694582],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.863404, 28.694572],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.863983, 28.69452],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.864509, 28.69437],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.865056, 28.694012],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '红谷中大道',
|
||||||
|
lnglat: [115.867006, 28.691703],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.869128, 28.689165],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.869562, 28.688873],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.870023, 28.688713],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.882029, 28.686248],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.882624, 28.686233],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.883231, 28.686299],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.885452, 28.68733],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.886315, 28.687598],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.887442, 28.687669],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.889555, 28.687777],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '阳明公园',
|
||||||
|
lnglat: [115.891286, 28.687954],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.894791, 28.688233],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.900021, 28.687753],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '青山路口',
|
||||||
|
lnglat: [115.901382, 28.686738],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.902832, 28.68548],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.903202, 28.684765],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.903251, 28.683852],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '福州路',
|
||||||
|
lnglat: [115.903284, 28.680642],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '八一广场',
|
||||||
|
lnglat: [115.902665, 28.67514],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.903379, 28.672778],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.90375, 28.6689],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.903884, 28.668415],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.904002, 28.668166],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.904275, 28.66785],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '永叔路',
|
||||||
|
lnglat: [115.90533, 28.666803],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.907757, 28.664447],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.908218, 28.664296],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.909339, 28.664226],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '丁公路南',
|
||||||
|
lnglat: [115.910889, 28.664118],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.916538, 28.663567],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '南昌火车站',
|
||||||
|
lnglat: [115.921001, 28.663184],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.922766, 28.663143],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.924236, 28.663313],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.925996, 28.663576],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '顺外',
|
||||||
|
lnglat: [115.928124, 28.663683],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.929933, 28.663718],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.931575, 28.663332],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.932991, 28.662979],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.933635, 28.662898],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.937873, 28.662851],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.938457, 28.662724],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.938897, 28.6624],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.939203, 28.661934],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.939391, 28.661505],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.939503, 28.661082],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
n: '',
|
||||||
|
lnglat: [115.93953, 28.660663],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
n: '辛家庵',
|
||||||
|
lnglat: [115.93957, 28.659337],
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
export default class MultiLine extends React.Component {
|
||||||
|
private scene: Scene;
|
||||||
|
|
||||||
|
public componentWillUnmount() {
|
||||||
|
this.scene.destroy();
|
||||||
|
}
|
||||||
|
|
||||||
|
public async componentDidMount() {
|
||||||
|
const scene = new Scene({
|
||||||
|
id: 'map',
|
||||||
|
map: new GaodeMap({
|
||||||
|
pitch: 50,
|
||||||
|
style: 'light',
|
||||||
|
center: [115.857963, 28.683016],
|
||||||
|
zoom: 14,
|
||||||
|
minZoom: 9,
|
||||||
|
rotation: 0,
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
|
const lineData = {
|
||||||
|
type: 'FeatureCollection',
|
||||||
|
features: [],
|
||||||
|
};
|
||||||
|
|
||||||
|
const p = {
|
||||||
|
type: 'Feature',
|
||||||
|
properties: {},
|
||||||
|
geometry: { type: 'LineString', coordinates: [] },
|
||||||
|
};
|
||||||
|
|
||||||
|
data.forEach((item) => {
|
||||||
|
// @ts-ignore
|
||||||
|
p.geometry.coordinates.push(item.lnglat as number[]);
|
||||||
|
});
|
||||||
|
// @ts-ignore
|
||||||
|
lineData.features.push(p);
|
||||||
|
|
||||||
|
const layer = new LineLayer({})
|
||||||
|
.source(lineData)
|
||||||
|
.size([2, 3])
|
||||||
|
.shape('line')
|
||||||
|
.color('rgb(255, 187, 0)');
|
||||||
|
scene.addLayer(layer);
|
||||||
|
}
|
||||||
|
|
||||||
|
public render() {
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
id="map"
|
||||||
|
style={{
|
||||||
|
position: 'absolute',
|
||||||
|
top: 0,
|
||||||
|
left: 0,
|
||||||
|
right: 0,
|
||||||
|
bottom: 0,
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
|
@ -19,6 +19,7 @@
|
||||||
"paths": {
|
"paths": {
|
||||||
"@antv/l7-*": ["packages/*/src"],
|
"@antv/l7-*": ["packages/*/src"],
|
||||||
"@antv/l7": ["packages/l7/src"],
|
"@antv/l7": ["packages/l7/src"],
|
||||||
|
"@antv/async-hook": ["packages/async-hook/src"],
|
||||||
"*": ["node_modules", "packages", "typings/*"]
|
"*": ["node_modules", "packages", "typings/*"]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
33
yarn.lock
33
yarn.lock
|
@ -4801,6 +4801,11 @@ async-each@^1.0.1:
|
||||||
resolved "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf"
|
resolved "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf"
|
||||||
integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==
|
integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==
|
||||||
|
|
||||||
|
async-es@^3.2.0:
|
||||||
|
version "3.2.0"
|
||||||
|
resolved "https://registry.npmjs.org/async-es/-/async-es-3.2.0.tgz#8837aa12f675de80fac56b94a4b4cef515343de3"
|
||||||
|
integrity sha512-dMWVIUBi/ejt+QERtMdIin2rlzSNK7GAfEwIyaOGDy536s0OqH+aUNkj9MQ01hq2rB1f7x6w7RJchtthCk0IDA==
|
||||||
|
|
||||||
async-foreach@^0.1.3:
|
async-foreach@^0.1.3:
|
||||||
version "0.1.3"
|
version "0.1.3"
|
||||||
resolved "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542"
|
resolved "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542"
|
||||||
|
@ -7889,10 +7894,15 @@ cz-conventional-changelog@^3.0.2:
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
"@commitlint/load" ">6.1.1"
|
"@commitlint/load" ">6.1.1"
|
||||||
|
|
||||||
"d3-array@1.2.0 - 2", d3-array@2.3.3:
|
d3-array@1, d3-array@^1.2.0:
|
||||||
version "2.3.3"
|
version "1.2.4"
|
||||||
resolved "https://registry.npmjs.org/d3-array/-/d3-array-2.3.3.tgz#e90c39fbaedccedf59fc30473092f99a0e14efa2"
|
resolved "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz#635ce4d5eea759f6f605863dbcfc30edc737f71f"
|
||||||
integrity sha512-syv3wp0U5aB6toP2zb2OdBkhTy1MWDsCAaYk6OXJZv+G4u7bSWEmYgxLoFyc88RQUhZYGCebW9a9UD1gFi5+MQ==
|
integrity sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==
|
||||||
|
|
||||||
|
d3-collection@1:
|
||||||
|
version "1.0.7"
|
||||||
|
resolved "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.7.tgz#349bd2aa9977db071091c13144d5e4f16b5b310e"
|
||||||
|
integrity sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==
|
||||||
|
|
||||||
d3-color@1, d3-color@^1.4.0:
|
d3-color@1, d3-color@^1.4.0:
|
||||||
version "1.4.0"
|
version "1.4.0"
|
||||||
|
@ -7928,7 +7938,7 @@ d3-hexbin@^0.2.2:
|
||||||
resolved "https://registry.npmjs.org/d3-hexbin/-/d3-hexbin-0.2.2.tgz#9c5837dacfd471ab05337a9e91ef10bfc4f98831"
|
resolved "https://registry.npmjs.org/d3-hexbin/-/d3-hexbin-0.2.2.tgz#9c5837dacfd471ab05337a9e91ef10bfc4f98831"
|
||||||
integrity sha1-nFg32s/UcasFM3qeke8Qv8T5iDE=
|
integrity sha1-nFg32s/UcasFM3qeke8Qv8T5iDE=
|
||||||
|
|
||||||
d3-interpolate@1, d3-interpolate@^1.2.0:
|
d3-interpolate@1:
|
||||||
version "1.4.0"
|
version "1.4.0"
|
||||||
resolved "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.4.0.tgz#526e79e2d80daa383f9e0c1c1c7dcc0f0583e987"
|
resolved "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.4.0.tgz#526e79e2d80daa383f9e0c1c1c7dcc0f0583e987"
|
||||||
integrity sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==
|
integrity sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==
|
||||||
|
@ -7942,14 +7952,15 @@ d3-interpolate@~1.1.5:
|
||||||
dependencies:
|
dependencies:
|
||||||
d3-color "1"
|
d3-color "1"
|
||||||
|
|
||||||
d3-scale@^3.1.0:
|
d3-scale@2:
|
||||||
version "3.2.1"
|
version "2.2.2"
|
||||||
resolved "https://registry.npmjs.org/d3-scale/-/d3-scale-3.2.1.tgz#da1684adce7261b4bc7a76fe193d887f0e909e69"
|
resolved "https://registry.npmjs.org/d3-scale/-/d3-scale-2.2.2.tgz#4e880e0b2745acaaddd3ede26a9e908a9e17b81f"
|
||||||
integrity sha512-huz5byJO/6MPpz6Q8d4lg7GgSpTjIZW/l+1MQkzKfu2u8P6hjaXaStOpmyrD6ymKoW87d2QVFCKvSjLwjzx/rA==
|
integrity sha512-LbeEvGgIb8UMcAa0EATLNX0lelKWGYDQiPdHj+gLblGVhGLyNbaCn3EvrJf0A3Y/uOOU5aD6MTh5ZFCdEwGiCw==
|
||||||
dependencies:
|
dependencies:
|
||||||
d3-array "1.2.0 - 2"
|
d3-array "^1.2.0"
|
||||||
|
d3-collection "1"
|
||||||
d3-format "1"
|
d3-format "1"
|
||||||
d3-interpolate "^1.2.0"
|
d3-interpolate "1"
|
||||||
d3-time "1"
|
d3-time "1"
|
||||||
d3-time-format "2"
|
d3-time-format "2"
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue