Как побороть Cannot read private member from an object whose class did not declare it в Яндекс картах API v3?

Ссылка скопирована
1 ответ

Всем привет, внедряю яндекс карты в приложение на Vue 3.

Имеется код инициализации

const initYMap = async (_container: HTMLElement) => {   try {     await ymaps3.ready      // Geocode     const position = await getPosition()      // Initialization     map.value = new ymaps3.YMap(_container, {location: {center: position, zoom: 14}})      // Layers     map.value       .addChild(new ymaps3.YMapDefaultSchemeLayer({}))       .addChild(new ymaps3.YMapFeatureDataSource({id: MARKER_SOURCE}))       .addChild(new ymaps3.YMapLayer({source: MARKER_SOURCE, type: 'markers', zIndex: 1800}))       // Events       .addChild(new ymaps3.YMapListener({layer: 'any', onActionEnd: (evt) => onMoveHandler(evt)}))      // Spawn points     points.value = await initPoints(map.value.bounds) ?? null      if (points.value) {       const {YMapClusterer, clusterByGrid} = await ymaps3.import('@yandex/ymaps3-clusterer@0.0.1')       const features: Feature[] = pointsToFeatures(points.value)        clusterer = new YMapClusterer({         method: clusterByGrid({gridSize: 64}),         features,         marker: marker,         cluster: cluster       })        map.value.addChild(clusterer)     }   } catch (error) {     console.log('Произошла ошибка инициализации карты', error)   } }

const initYMap = async (_container: HTMLElement) => { try { await ymaps3.ready // Geocode const position = await getPosition() // Initialization map.value = new ymaps3.YMap(_container, {location: {center: position, zoom: 14}}) // Layers map.value .addChild(new ymaps3.YMapDefaultSchemeLayer({})) .addChild(new ymaps3.YMapFeatureDataSource({id: MARKER_SOURCE})) .addChild(new ymaps3.YMapLayer({source: MARKER_SOURCE, type: 'markers', zIndex: 1800})) // Events .addChild(new ymaps3.YMapListener({layer: 'any', onActionEnd: (evt) => onMoveHandler(evt)})) // Spawn points points.value = await initPoints(map.value.bounds) ?? null if (points.value) { const {YMapClusterer, clusterByGrid} = await ymaps3.import('@yandex/ymaps3-clusterer@0.0.1') const features: Feature[] = pointsToFeatures(points.value) clusterer = new YMapClusterer({ method: clusterByGrid({gridSize: 64}), features, marker: marker, cluster: cluster }) map.value.addChild(clusterer) } } catch (error) { console.log('Произошла ошибка инициализации карты', error) } }

В строке с // Spawn points я беру координаты границ карты с помощью map.value.bounds

В Итоге получаю следующую ошибку

TypeError: Cannot read private member from an object whose class did not declare it

TypeError: Cannot read private member from an object whose class did not declare it

Как побороть Cannot read private member from an object whose class did not declare it в Яндекс картах API v3?

Почему это происходит? Я же получаю bounds буквально в той же функции где и была объявлена карта? Как это исправить?

Дополнительно:

А впринципе все решилось, инциализировав map как обычную переменную, нежели ref

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Дмитрий К. Ответ

Для того чтобы побороть ошибку "Cannot read private member from an object whose class did not declare it" при работе с Яндекс картами API v3, необходимо понимать, что данная ошибка возникает из-за попытки доступа к приватному свойству объекта, которое не было объявлено в классе. В случае с API Яндекс карт, это может быть вызвано неправильной работой с объектами карты или маркерами.

Для решения данной проблемы, необходимо удостовериться, что вы используете правильные методы доступа к свойствам объектов карты или маркеров. В случае с API Яндекс карт, следует использовать предоставленные методы доступа к свойствам объектов, а не обращаться к ним напрямую.

Пример использования методов доступа к свойствам объектов API Яндекс карт:

// Создание маркера на карте
var myPlacemark = new ymaps.Placemark([55.76, 37.64], {
    hintContent: 'Москва!',
    balloonContent: 'Столица России'
});
 
// Получение содержимого балуна маркера
var balloonContent = myPlacemark.properties.get('balloonContent');

// Создание маркера на карте var myPlacemark = new ymaps.Placemark([55.76, 37.64], { hintContent: 'Москва!', balloonContent: 'Столица России' }); // Получение содержимого балуна маркера var balloonContent = myPlacemark.properties.get('balloonContent');

При работе с объектами API Яндекс карт, рекомендуется изучить документацию по использованию методов доступа к свойствам объектов и следовать рекомендациям разработчиков. Таким образом, можно избежать ошибок доступа к приватным свойствам и обеспечить корректную работу с API.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно