new icon indicating copy to clipboard operation
new copied to clipboard

Вывести на страницу календаря карту с городами

Open pepelsbey opened this issue 6 years ago • 30 comments

Это будет первый шаг по развитию страницы из простого списка в полезный календарь в разных представлениях. Задачу можно разделить на шаги:

  • [ ] Вставить Google Maps на страницу calendar инлайновым скриптом
  • [ ] Сгенерировать массив или объект со всеми событиями
  • [ ] Скормить данные Google Maps и вывести просто точки на карте мира
  • [ ] Сделать точки раскрываемыми, с подробностями про событие внутри

Можно на каждый шаг открыть свой пулреквест.

pepelsbey avatar Jan 24 '19 11:01 pepelsbey

Инлайновым, это iframe? Если да, то похоже что, нельзя вывести на карту больше одного маркера, и придется использовать гугловое апи, получать ключ. Если нет, то можно поподробней как делать?

LxPvlv avatar Feb 06 '19 19:02 LxPvlv

Вот, например, как выводится карта на сайте WSD:

  1. В документе лежит статическая картинка c картой, такой фолбэк.
  2. Скрипт запускается, парсит путь к ней и заменяет на карту.

Как именно заменяет — неважно, главное что по пути можно навставлять меток и что угодно. То есть на стороне Гэтсби готовится массив точек, а скрипт их обрабатывает и строит карту с помощью Google Maps API, да.

pepelsbey avatar Feb 06 '19 19:02 pepelsbey

Не получается тестировать Google Static API. Гугл разрешает сделать один запрос в день, чтобы получить больше надо включать биллиг, и предоставить данные кредитной карты. Может быть вы сделаете тестовый ключик, который можно будет удаль после пулреквеста?

@LxPvlv обычно такие ограничения не применяются для локального тестрования, нет?

pepelsbey avatar Feb 07 '19 10:02 pepelsbey

В квотах 1 запрос в день. Потом можно включить биллиг и Гуггл дает $200 каждый месяц на GoogleMaps(но надо подключать платежную карту). Похоже гугл недавно сменил политику.

LxPvlv avatar Feb 07 '19 10:02 LxPvlv

Не знаю как сделать правильно. Статическая картинка и координаты маркера, должны генерироваться на этапе создания новой записи(item) календаря. Иначе получится так, что на каждый чих(любая пересборка при отладке например) будут делать запросы к api гугла. Но зачем ничего ведь не меняется.

Ключ что вы мне дали, может делать запросы только к Maps JavaScript API, надо еще подключить к нему Maps Static API и Geocoding API.

LxPvlv avatar Feb 10 '19 11:02 LxPvlv

Каждая загрузка страницы со встроенной картой — это запрос к API карт. Не вижу ничего плохого при сборке сайта запрашивать у этого API координаты города по названию «Москва, Россия», он точно должен это уметь.

pepelsbey avatar Feb 10 '19 11:02 pepelsbey

У этого ключа и так был доступ ко всем API, но я на всякий случай сделал следующее:

  • Ограничил домен: https://*.web-standards.ru/* (локально должно работать)
  • Ограничил API
    • Maps Static API
    • Maps Embed API
    • Maps JavaScript API

pepelsbey avatar Feb 10 '19 12:02 pepelsbey

image

pepelsbey avatar Feb 10 '19 12:02 pepelsbey

Ничего не могу найти. Покажите пример как можно получить координаты без геокодера.

LxPvlv avatar Feb 10 '19 15:02 LxPvlv

А почему не использовать для этого геокодер?

pepelsbey avatar Feb 10 '19 16:02 pepelsbey

Я могу делать запросы только на Maps JavaScript API. чтобы делать запросы на Maps Static API и Geocoding API я просил у вас ключ. Ключ что вы мне дали я не могу использовать так как он ораничен https://*.web-standards.ru/*. Может быть я чего то не понимаю или не знаю.

LxPvlv avatar Feb 10 '19 16:02 LxPvlv

Добавил http://localhost/ в список разрешённых адресов, должно заработать.

image

pepelsbey avatar Feb 10 '19 16:02 pepelsbey

Получил ответ от геокодера REQUEST_DENIED А вот Maps Static API работает. Наверное вы не подключили к ключу Geocoding API

LxPvlv avatar Feb 10 '19 17:02 LxPvlv

Всё, теперь точно включил

image

pepelsbey avatar Feb 10 '19 18:02 pepelsbey

Проверил сразу после вашего сообщения, все работало. Сейчас получаю это:

{
"error_message": "API keys with referer restrictions cannot be used with this API.",
"results": [],
"status": "REQUEST_DENIED"
}

LxPvlv avatar Feb 10 '19 19:02 LxPvlv

Сделайте пожалуйста новый ключ без ограничений, после пулреквеста его можно будет удалить.

LxPvlv avatar Feb 10 '19 19:02 LxPvlv

Судя по тексту ошибки, он и на живом домене с ограничениями не сработает. Но окей, пока сниму.

pepelsbey avatar Feb 10 '19 20:02 pepelsbey

{
"error_message": "This IP, site or mobile application is not authorized to use this API key. Request received from IP address ********, with referer: http://localhost:8000/calendar/",
"results": [],
"status": "REQUEST_DENIED"
}

LxPvlv avatar Feb 10 '19 20:02 LxPvlv

Убрал ограничение.

pepelsbey avatar Feb 10 '19 20:02 pepelsbey

Может мы ускорим всё? Если бы был пулреквест (самый базовый), я бы сам смог проверить — работает API или нет.

pepelsbey avatar Feb 10 '19 20:02 pepelsbey

Сейчас api_key лежит прямо в коде. Пока не знаю как его убрать.

LxPvlv avatar Feb 10 '19 20:02 LxPvlv

Ключ в любом случае будет публичный, если мы будем какие-то вещи делать в подключаемых скриптах, это нормально.

pepelsbey avatar Feb 10 '19 20:02 pepelsbey

Ну да точно. Сейчас сделаю.

LxPvlv avatar Feb 10 '19 20:02 LxPvlv

Линтер не дает сделать коммит, console.log ему не нравится.

LxPvlv avatar Feb 10 '19 21:02 LxPvlv

Что с пулреквестом? #111 Почему молчите? Все плохо?

LxPvlv avatar Feb 11 '19 20:02 LxPvlv

Спокойствие, только спокойствие. Не было времени посмотреть, завтра смогу.

pepelsbey avatar Feb 11 '19 20:02 pepelsbey

Я думал над этим вопросом, но так выходит, что главным источником данных является раздел конференций. Из него можно удобно формировать и календарь и карту, т.к. данных достаточно.

Изначально пробовал использовать Leaflet, т.к. делал уже подобное решение для недвижки, но пока решил отложить. Да и для разработки можно использовать OSM, а уж потом если принципиально, подключать API другой карты.

aleshkanet avatar Mar 04 '19 10:03 aleshkanet

Главный источник для календаря — календарь. Конференции — это другой раздел, со своими источниками.

pepelsbey avatar Mar 04 '19 10:03 pepelsbey

Неправильно выразился. я о том, что #119 теоретически содержит все необходимые данные для вывода карты и даже календаря. Я не говорю снести все и сделать так, просто делюсь мыслями. И да я понимаю, что календарь формируется из файла календаря, а конференции из другого источника.

aleshkanet avatar Mar 04 '19 11:03 aleshkanet

У этих разделов разные цели и пересечение (дублирование) совсем небольшое, так что я бы не стал усложнять и ходить куда-то за данными, которые уже есть в календаре.

pepelsbey avatar Mar 04 '19 11:03 pepelsbey