taro-hooks
Version:
为 Taro 而设计的 Hooks Library
89 lines (88 loc) • 3.2 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
var tslib_1 = require("tslib");
var taro_1 = require("@tarojs/taro");
var core_1 = require("@taro-hooks/core");
var shared_1 = require("@taro-hooks/shared");
var useActivePromise_1 = tslib_1.__importDefault(require("../utils/useActivePromise"));
function useMap(mapId, component) {
var _ref = (0, core_1.useState)(),
mapContext = _ref[0],
setMapContext = _ref[1];
var _ref2 = (0, core_1.useState)({}),
forceUpdate = _ref2[1];
(0, taro_1.useReady)(function () {
setMapContext(component ? (0, taro_1.createMapContext)(mapId, component) : (0, taro_1.createMapContext)(mapId));
});
(0, core_1.useEffect)(function () {
if (mapContext && shared_1.ISREACT) {
forceUpdate({});
}
}, [mapContext]);
var getCenterAsync = (0, useActivePromise_1["default"])('getCenterLocation', mapContext);
var getRegionAsync = (0, useActivePromise_1["default"])('getRegion', mapContext);
var getRotateAsync = (0, useActivePromise_1["default"])('getRotate', mapContext);
var getScaleAsync = (0, useActivePromise_1["default"])('getScale', mapContext);
var getSkewAsync = (0, useActivePromise_1["default"])('getSkew', mapContext);
var get = function get(iconPath) {
var getCenterLocationOption = iconPath ? {
iconPath: iconPath
} : {};
return Promise.all([getCenterAsync(getCenterLocationOption), getRegionAsync(), getRotateAsync(), getScaleAsync(), getSkewAsync()]).then(function (_ref3) {
var center = _ref3[0],
region = _ref3[1],
rotate = _ref3[2],
scale = _ref3[3],
skew = _ref3[4];
return {
center: center,
region: region,
rotate: rotate,
scale: scale,
skew: skew
};
});
};
var open = (0, useActivePromise_1["default"])('openMapApp', mapContext);
var includeAsync = (0, useActivePromise_1["default"])('includePoints', mapContext);
var include = function include(points, padding) {
if (padding === void 0) {
padding = [];
}
return includeAsync({
points: points,
padding: padding
});
};
var moveTo = (0, useActivePromise_1["default"])('moveToLocation', mapContext);
var translate = (0, useActivePromise_1["default"])('translateMarker', mapContext);
var addMarkersAsync = (0, useActivePromise_1["default"])('addMarkers', mapContext);
var removeMarkersAsync = (0, useActivePromise_1["default"])('removeMarkers', mapContext);
var toggleMarkers = function toggleMarkers(markers, clear) {
if (clear === void 0) {
clear = false;
}
if (Array.isArray(markers) && markers.every(shared_1.isNumber)) {
// @ts-ignore (taro markers not safe for miniprogram, see: https://developers.weixin.qq.com/miniprogram/dev/component/map.html#marker )
return removeMarkersAsync({
markerIds: markers
});
}
var option = {
markers: markers,
clear: clear
};
return addMarkersAsync(option);
};
return [mapContext, {
get: get,
open: open,
include: include,
moveTo: moveTo,
translate: translate,
toggleMarkers: toggleMarkers
}];
}
exports["default"] = useMap;
;