Merge pull request #539 from antvis/feat_event_compose

feat(core): interaction
This commit is contained in:
@thinkinggis 2020-10-14 17:42:22 +08:00 committed by GitHub
commit 6b1f5eecf3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 11 additions and 10 deletions

View File

@ -12,6 +12,7 @@ export interface IInteractionTarget {
lngLat: ILngLat;
type: string;
featureId?: number;
target: MouseEvent | TouchEvent;
}
export interface IInteractionService {

View File

@ -148,7 +148,7 @@ export default class InteractionService extends EventEmitter
clientY -= top;
}
const lngLat = this.mapService.containerToLngLat([clientX, clientY]);
return { x: clientX, y: clientY, lngLat, type };
return { x: clientX, y: clientY, lngLat, type, target: target.srcEvent };
}
private onHover = (event: MouseEvent) => {
const { clientX, clientY } = event;
@ -180,6 +180,7 @@ export default class InteractionService extends EventEmitter
y,
lngLat,
type,
target: event,
});
}
};

View File

@ -125,7 +125,7 @@ export default class PickingService implements IPickingService {
}
private pickFromPickingFBO = (
layer: ILayer,
{ x, y, lngLat, type }: IInteractionTarget,
{ x, y, lngLat, type, target }: IInteractionTarget,
) => {
let isPicked = false;
const { getViewportSize, readPixels, getContainer } = this.rendererService;
@ -173,13 +173,14 @@ export default class PickingService implements IPickingService {
type = 'mouseenter';
}
const target = {
const layerTarget = {
x,
y,
type,
lngLat,
featureId: pickedFeatureIdx,
feature: rawFeature,
target,
};
if (!rawFeature) {
// this.logger.error(
@ -189,11 +190,11 @@ export default class PickingService implements IPickingService {
// trigger onHover/Click callback on layer
isPicked = true;
layer.setCurrentPickId(pickedFeatureIdx);
this.triggerHoverOnLayer(layer, target); // 触发拾取事件
this.triggerHoverOnLayer(layer, layerTarget); // 触发拾取事件
}
} else {
// 未选中
const target = {
const layerTarget = {
x,
y,
lngLat,
@ -202,13 +203,14 @@ export default class PickingService implements IPickingService {
? 'mouseout'
: 'un' + type,
featureId: null,
target,
feature: null,
};
this.triggerHoverOnLayer(layer, {
...target,
...layerTarget,
type: 'unpick',
});
this.triggerHoverOnLayer(layer, target);
this.triggerHoverOnLayer(layer, layerTarget);
layer.setCurrentPickId(null);
}

View File

@ -141,9 +141,6 @@ export default class TextLayerDemo extends React.Component {
});
scene.addLayer(layer);
this.scene = scene;
layer.on('remapping', () => {
console.log('remapinbg event');
});
const gui = new dat.GUI();
this.gui = gui;
const styleOptions = {