Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

loadYmap примеры #219

Closed
avxkim opened this issue Jan 21, 2020 · 10 comments
Closed

loadYmap примеры #219

avxkim opened this issue Jan 21, 2020 · 10 comments

Comments

@avxkim
Copy link

avxkim commented Jan 21, 2020

Подключил скрипт как в гайде:

import { loadYmap } from 'vue-yandex-maps'

const settings = {
  // settings hidden
}

export default {
  mounted() {
    loadYmap({ ...settings  });
  }
}

Судя по исходникам, мне должна быть доступна переменная ymaps, но она не доступна в том же mounted(), пишет, что ymaps is undefined.

@PNKBizz
Copy link
Member

PNKBizz commented Jan 21, 2020

Это асинхронная функция. Я сделаю пример использования в ближайшее время.

@DiceMasters
Copy link

Подключил скрипт как в гайде:

import { loadYmap } from 'vue-yandex-maps'

const settings = {
  // settings hidden
}

export default {
  mounted() {
    loadYmap({ ...settings  });
  }
}

Судя по исходникам, мне должна быть доступна переменная ymaps, но она не доступна в том же mounted(), пишет, что ymaps is undefined.

Не разобрался с вопросом?

@PNKBizz
Copy link
Member

PNKBizz commented Feb 17, 2020

Это асинхронная функция. Пока не успел поправить доки (

@avxkim
Copy link
Author

avxkim commented Feb 17, 2020

@DiceMasters через then() или async/await:

loadYmap({ ...settings  })
  .then(() => ...);

@PNKBizz PNKBizz closed this as completed Mar 5, 2020
@fancar
Copy link

fancar commented Apr 10, 2020

Добрый день. В том же компоненте, где отрисовывается yandexMap
пытаюсь получить в mounted() ymaps для того, чтобы отрисовать на карте heatmap

loadYmap({ ...settings, debug: true }).then(() => { })

получаю ошибку
TypeError: window.__jsonp_ymaps_map is not a function

Что я делаю не так?

@PNKBizz
Copy link
Member

PNKBizz commented Apr 10, 2020

Обновитесь до версии 0.10.7

@predatorfromekb
Copy link

если у вас сборка через webpack, то поможет window.ymaps

@srsad
Copy link

srsad commented May 21, 2020

Добрый день. В том же компоненте, где отрисовывается yandexMap
пытаюсь получить в mounted() ymaps для того, чтобы отрисовать на карте heatmap

loadYmap({ ...settings, debug: true }).then(() => { })

получаю ошибку
TypeError: window.__jsonp_ymaps_map is not a function

Что я делаю не так?

Удалось разобраться как от рисовать heatmap?
У меня в голове немного не укладывается как это работает. На ваниле я делал бы что-то типо такого:

ymaps.ready(['Heatmap']).then(() => {
    const myMap = new ymaps.Map('map', {
      mapSettings
    });
   const heatmap = new ymaps.Heatmap(mapPoints, {config});
  ...
})

@Frallen
Copy link

Frallen commented Mar 22, 2022

Для тех кто тупит как и я. Вот пример.

loadYmap({...this.mapSettings}).then(()=> { var geolocation = window.ymaps.geolocation ); }) } )

@nestle49
Copy link

nestle49 commented Oct 29, 2022

Документация и правда от бога, тот кто ее писал (привет!), как это обычно бывает, не заморачивался и опустил все необходимое (очевидное для себя), оставив какие-то обрывки из алгоритма подключения карты, по которым мы и должны собирать пазл и восстанавливать минимальную необходимую последовательность действий

@PNKBizz
После таких танцев с бубном хочется задать вопрос - реализация пакета вообще на нормальном уровне или там аналогично по принципу "ну вот как-то это работает у нас да"?

Минимальная (но не полная) последовательность шагов:

  1. Сделать npm i vue-yandex-maps @types/yandex-maps (или vue-yandex-maps@next или vue-yandex-maps@beta или что-то еще?), создать файл vue-yandex-maps.d.ts с содержимым declare module 'vue-yandex-maps';
  2. Добавить в tsconfig.json
"types": [
            "@types/yandex-maps"
 ]
  1. В компоненте
<template>
   <div ref="mapElement" />
</template>

<script lang="ts" setup>
import { ref, onMounted, onUnmounted } from 'vue';
import { loadYmap } from 'vue-yandex-maps';

const mapElement = ref<HTMLElement | null>(null);
const map = ref<ymaps.Map | null>(null);

const yandexMapInit = async () => {
    if (!mapElement.value) {
        return;
    }

    await loadYmap({
        apiKey: '',
        lang: 'ru_RU',
        coordorder: 'latlong',
        enterprise: false,
        version: '2.1',
        debug: true
    });
    
    const ymapControls: ymaps.ControlSingleKey[] = ['zoomControl'];

    map.value = new globalThis.ymaps.Map(
        mapElement.value,
        {
            center: [55.751574, 37.573856],
            zoom: 11,
            controls: ymapControls
        },
        {
            copyrightLogoVisible: false,
            copyrightProvidersVisible: false,
            copyrightUaVisible: false,
            suppressMapOpenBlock: true
        }
    );

};

const clearMap = () => {
    if (!mapElement.value) {
        return;
    }

    for (let index = 0; mapElement.value.children.length; index++) {
        mapElement.value.children[0]?.remove();
    }

    map.value = null;
};

onMounted(async () => {
    await yandexMapInit();
});

onUnmounted(() => {
    clearMap();
});
</script>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants