@kirillleogky

Как добавить в вызов функции (при ymaps.ready ) свои координаты?

Есть основной js:
import getUserLocation from './getLocation';
import addMap from './addMap';

const userLocation = getUserLocation();
/* eslint-disable */
ymaps.ready(addMap(53.9000, 27.5667));
/* eslint-enable */


getLocation.js :
export default async function getUserLocation() {

  return fetch(`https://ipinfo.io/json?token=${токен}`).then((response) => response.json());
}


и собственно addMap.js :
export default function initMap(latitude, longitude) {
  /* eslint-disable */
   new ymaps.Map('map', {
         center: [latitude, longitude],
         zoom: 15,
        });
  /* eslint-enable */
}


Как мне брать из другого API координаты и вставлять в addMap.js при вызове?

В моём случае появляется ошибка:
5deccd85c32d7337513137.png
  • Вопрос задан
  • 290 просмотров
Решения вопроса 1
TTATPuOT
@TTATPuOT
https://code.patriotovsky.ru/
1) Создаёте глобальный объект maps:
import getUserLocation from './getLocation';
import addMap from './addMap';

let maps;

2) При готовности карт создаёте карту и получения геолокации пользователя, обновляете позицию карты:
ymaps.ready(function() {
  maps = new ymaps.Map("map", {
    center: [55.76, 37.64],
    zoom: 2
  });
  getUserLocation().then((lat, lng) => maps.setCenter([55.76, 37.64]));
});

Позицию обновлять можно только после того, как карта инициализирована, не раньше, не позже.

Как упаковать это всё в модули подумайте самостоятельно, пожалуйста.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы