Skip to content

Изменение поведений карты

html
<yandex-map
    :cursor-grab="enabledBehaviors.includes('drag')"
    :height="height"
    :settings="{
        location: {
            center,
            zoom,
        },
        theme,
        showScaleInCopyrights: true,
        behaviors: enabledBehaviors,
    }"
    :width="width"
>
    <yandex-map-default-scheme-layer/>
    <yandex-map-controls :settings="{ position: 'right top', orientation: 'vertical' }">
        <yandex-map-control>
            <div class="behaviors">
                <label
                    v-for="(_, behavior) in allBehaviors"
                    :key="behavior"
                >
                    <input
                        :checked="enabledBehaviors.includes(behavior)"
                        type="checkbox"
                        @input="!enabledBehaviors.includes(behavior) ? enabledBehaviors.push(behavior) : enabledBehaviors = enabledBehaviors.filter(x => x !== behavior)"
                    >
                    {{ behavior }}
                </label>
            </div>
        </yandex-map-control>
        <yandex-map-control>
            <div class="behaviors">
                Для проверки работы mouseRoute/mouseTilt, удерживайте CTRL+ЛКМ по карте
            </div>
        </yandex-map-control>
    </yandex-map-controls>
</yandex-map>
ts
import { ref } from 'vue';
import { YandexMap, YandexMapControl, YandexMapControls, YandexMapDefaultSchemeLayer } from 'vue-yandex-maps';
import type { BehaviorType } from '@yandex/ymaps3-types';

// Аналогично включены по умолчанию в самой Яндекс Карте
const enabledBehaviors = ref<BehaviorType[]>(['drag', 'scrollZoom', 'pinchZoom', 'dblClick']);

const allBehaviors: Record<BehaviorType, true> = {
    dblClick: true,
    drag: true,
    scrollZoom: true,
    mouseRotate: true,
    mouseTilt: true,
    magnifier: true,
    oneFingerZoom: true,
    panTilt: true,
    pinchRotate: true,
    pinchZoom: true,
};
css
<style scoped>
.behaviors {
  padding: 5px;
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  font-size: 14px;
}
</style>

Сделано с ♥ под лицензией MIT.