@uiw/react-amap-context-menu
Version:
地图图面一种特殊的信息窗体,即右键菜单。
48 lines (47 loc) • 1.95 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useContextMenu = void 0;
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _react = require("react");
var _reactAmapUtils = require("@uiw/react-amap-utils");
var _reactAmapMap = require("@uiw/react-amap-map");
var _excluded = ["position"];
var useContextMenu = exports.useContextMenu = function useContextMenu() {
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var position = props.position,
other = (0, _objectWithoutProperties2["default"])(props, _excluded);
var _useMapContext = (0, _reactAmapMap.useMapContext)(),
map = _useMapContext.map;
var _useState = (0, _react.useState)(),
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
contextMenu = _useState2[0],
setContextMenu = _useState2[1];
(0, _react.useEffect)(function () {
if (!AMap || !map) return;
if (!contextMenu) {
var instance = new AMap.ContextMenu((0, _objectSpread2["default"])({}, other));
setContextMenu(instance);
var rightclick = function rightclick(e) {
return instance.open(map, position || e.lnglat);
};
map.on('rightclick', rightclick);
return function () {
if (instance) {
instance.close();
map.off('rightclick', rightclick);
setContextMenu(undefined);
}
};
}
}, [map]);
(0, _reactAmapUtils.useEventProperties)(contextMenu, props, ['onOpen', 'onClose']);
return {
contextMenu: contextMenu,
setContextMenu: setContextMenu
};
};
;