@uiw/react-amap-context-menu
Version:
地图图面一种特殊的信息窗体,即右键菜单。
40 lines • 1.23 kB
JavaScript
import _extends from "@babel/runtime/helpers/extends";
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/objectWithoutPropertiesLoose";
var _excluded = ["position"];
import { useState, useEffect } from 'react';
import { useEventProperties } from '@uiw/react-amap-utils';
import { useMapContext } from '@uiw/react-amap-map';
export var useContextMenu = function useContextMenu(props) {
if (props === void 0) {
props = {};
}
var {
position
} = props,
other = _objectWithoutPropertiesLoose(props, _excluded);
var {
map
} = useMapContext();
var [contextMenu, setContextMenu] = useState();
useEffect(() => {
if (!AMap || !map) return;
if (!contextMenu) {
var instance = new AMap.ContextMenu(_extends({}, other));
setContextMenu(instance);
var rightclick = e => instance.open(map, position || e.lnglat);
map.on('rightclick', rightclick);
return () => {
if (instance) {
instance.close();
map.off('rightclick', rightclick);
setContextMenu(undefined);
}
};
}
}, [map]);
useEventProperties(contextMenu, props, ['onOpen', 'onClose']);
return {
contextMenu,
setContextMenu
};
};