npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@jx3box/jx3box-map

v1.1.12

Published

JX3BOX Game Map

Readme

@jx3box/jx3box-map

用于各种需要在地图上展示点位的场合

QuickStart

import Jx3boxMap from "@jx3box/jx3box-map";
<jx3box-map :map-id="8" :datas="datas"></jx3box-map>

PVX 风格与响应式总览:

<jx3box-map
    :map-id="8"
    :datas="datas"
    mode="responsive"
    locale="zh-CN"
    :trim-border="true"
    :zoomable="true"
/>
export default {
    name: "App",
    components: {
        Jx3boxMap,
    },
    data: () => ({
        datas: [
            {
                x: 9655,
                y: 13231,
                title: "测试",
                content: "测试内容11<br />22",
            },
        ],
    }),
};

props

组件props作用。

mapId

当前所展示的地图

datas

在地图上的点位,是一个对象数组。其中的对象的属性如表所示

| 属性名 | 描述 | 必填 | 栗子 | 备注 | | ------- | ---------------- | ---- | ------- | ---------------------------------------------- | | x | 坐标x点 | 是 | 114514 | | | y | 坐标y点 | 是 | 1919810 | | | title | 悬浮框标题 | 否 | | | content | 悬浮框显示的内容 | 否 | | | focus | 是否展示这个点 | 否 | true | Boolean,多个数据focus都为true时只会展示第一个 |

overview 总览模式

默认情况下,overview为true。

当overview为true时:
组件会把整个地图缩放以适应容器大小,尝试展示完整的地图与点位。

当overview为false时:
组件会以地图的原尺寸展示地图,仅展示以特定点位为中心的周围一部分点位。
可以在datas内的对应对象设置focus为true指定中心点位。
或者给组件传入focus属性,值是要展示的点位在datas内的索引。
如果不通过任何方式指定要展示的点位会直接取第一个。

mode

新版布局模式,可选:

  • overview:完整总览;
  • responsive:完整总览并随容器宽度重新计算,推荐普通 Web 和手机使用;
  • focus:使用 1024 × 896 内部画布展示点位附近区域。

未传入 mode 时继续读取旧的 overview,旧调用无需迁移。

locale / messages / translator / labels

组件内置 zh-CNzh-TWen-USvi 四语言,并统一回退到 zh-CN

<jx3box-map locale="en-US" />

locale 未传入时会读取宿主 vue-i18n 的当前 locale,再读取 <html lang>

可以通过 messages 覆盖内置语言:

const messages = {
    "en-US": {
        loadError: "Custom map error",
    },
};

也可以传入 translator(key, params, locale) 对接宿主翻译函数,或通过 labels 直接覆盖单个固定文案。组件固定词条位于 jx3boxMap 命名空间;地图名、NPC、点位标题和说明仍由业务数据提供。

trim-border / trim-ratio

trim-border 用于裁去地图图片上下透明边,默认关闭;trim-ratio 默认 0.05。裁边在公共组件内部完成,宿主不需要监听 resize 后反向修改轮播高度。

zoomable / wheel-zoom

  • zoomable:是否允许缩放;
  • wheel-zoom:是否允许鼠标滚轮缩放,只有同时启用 zoomable 才生效;

普通总览地图的滚轮缩放默认关闭,避免地图阻断页面正常滚动。为兼容旧版地图工具,启用 map-draggable 的焦点地图继续保留滚轮和双指缩放;业务也可以通过 zoomable / wheel-zoom 显式控制。

aspect-ratio

响应式总览比例,默认 1024 / 896。容器宽度变化由 ResizeObserver 监听,同一帧内合并测量,并且只有尺寸实际改变时才触发 resize

map-label / point-label-key

用于无障碍名称和点位交互:

  • map-label:地图区域与图片替代文本;
  • point-label-key:点位对象中作为可访问名称的字段,默认 title

map-draggable

是否允许用户拖动地图,仅在overview为false时生效。
此时用户可以通过拖动地图来改变可见区域
即默认会以focus点为中心,但是用户可以拖动来改变展示的区域

point-draggable

是否允许用户移动点位。
此时用户可以通过拖动点位来改变点位的坐标。

map-follow

用户拖拽点位之后是否让地图跟随被拖拽的点居中。

show-toolbar

是否展示地图控制条,默认不展示。
地图只有默认子图时,控制条展示当前地图名称;存在多个子图时,控制条展示当前子图名称和当前索引。

allow-switch-sub

是否允许通过控制条切换子图,默认不允许。
只有在show-toolbartrue、当前地图存在多个子图且没有通过lock-sub-id锁定子图时,才会展示左右切换按钮。

auto-switch-sub-by-points

是否允许组件根据传入点位自动推断子图,默认允许。
如果业务侧会临时隐藏、筛选或清空点位,但不希望当前子图因此改变,可以设为false

事件

map-move

用户拖拽地图之后触发

point-move

用户拖拽点位之后触发

resize

容器尺寸实际变化后触发,保持兼容数组参数:[width, height]

error

比例数据或地图图片加载失败时触发:

{
    type: "scales" | "image",
    error,
}

原有 sub-switch 保持不变。

方法

pointPosition(point) -> {left: ..., bottom: ...}

获得一个坐标(游戏坐标)在当前地图的中地图偏移(像素)

gamePosition(left, bottom) -> {x: ..., y: ...}

和上面相反

initInnerOffset(point)

移动inner,使得一个点尽可能居

slots

允许一些部分的自定义slot。

title

地图上方的名称部分

point

地图上的点位元素,默认是一个带popover的小红点,如果需要替换的话需要自己给上popover

popover

如果使用默认的point,可以用popover这个slot来替换的默认的popover里的内容

error

替换默认错误状态,插槽参数为 { error, retry }

响应式建议

  • 桌面焦点浏览使用 mode="focus" 并给宿主容器明确高度;
  • 平板和手机使用 mode="responsive"
  • 手机触控按钮按 720px 断点增大,页面不会产生横向滚动;
  • 组件遵循 prefers-reduced-motion
  • 宿主应设置 min-width: 0,不要再覆盖 .c-map__inner 等内部结构。