Экспорт мест из API Google Maps в файл

Мне нужно экспортировать данные некоторого места из API Карт Google в файл (это может быть текстовый файл, но моя конечная цель - иметь CSV для импорта в мою базу данных). В настоящее время я использую их код JavaScript и некоторый метод JSON для отображения содержимого моих результатов.

Моя цель: Создайте переменную foundPlaces, которая содержит все места в соответствии с типом места, которое я ищу. Затем поместите все эти данные в загруженный файл.

В настоящее время я столкнулся с проблемой, так как, когда я открываю файл, я вижу только первый массив ["name","type","geo"]; и больше ничего (нет данных с мест). Это странно, потому что я могу отображать их на console.info Дополнительная информация: Я использую Blob, чтобы поместить весь свой контент и экспортировать этот blob-объект в файл.

Вот мой код

var foundPlaces = ["name","type","geo"];

    function download(content, fileName, contentType) {
        var a = document.createElement("a");
        var file = new Blob([content], {type: contentType});
        a.href = URL.createObjectURL(file);
        a.download = fileName;
        a.click();
    }

    function callback(results, status) {
      if (status === google.maps.places.PlacesServiceStatus.OK) {
      console.info("Creating File");   
      test = results[0].name;

        for (var i = 0; i < results.length; i++) {
          createMarker(results[i]);    
          foundPlaces.push(results[i].name);      
        }   
      }
    }

  console.info(foundPlaces);
  download(foundPlaces, 'places.txt', 'text/plain');

Это может быть тип контента, я точно не знаю, в чем я ошибаюсь. Буду благодарен за вашу помощь.

Я в курсе, что прошу поиграть с клиентской стороной.

Можете ли вы предоставить пример имеющегося у вас объекта данных?

Shahar 05.06.2018 13:48

Привет, @Makore, спасибо за помощь. Я исправил свою проблему тем же способом, что и вы. Добавление кнопки «onclick» в HTML-код. '<button onclick = "download (foundPlaces,' places.csv ',' text / plain ')"> Recuperer CSV </button>'. Это так работает. Однако я хотел, чтобы он загружался автоматически в конце скрипта: поэтому я вызвал функцию внутри скрипта. Спасибо за помощь.

Squick' 06.06.2018 11:46
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
2
490
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужно добавить a к телу, закодировать данные и добавить кодировку.

Примечание: Я жестко запрограммировал тип пантомимы, но заполните его, чтобы передать его в качестве аргумента функции.

function download(filename, text) {
  const a = document.createElement('a');
  a.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
  a.setAttribute('download', filename);
  a.style.display = 'none';
  document.body.appendChild(a);
  a.click();
  document.body.removeChild(a);
}
<!-- Example -->
<button onclick = "download('test.txt', 'I love text')">Click to download</button>

Ваш код работает нормально, спасибо. Что мне теперь делать, если я хочу, чтобы он скачался автоматически?

Squick' 06.06.2018 13:11

@Squicker Я рад, что смог помочь. Например, вы можете добавить загрузку функции как обратный вызов к вызову ajax. Поток должен быть таким: 1. Выполните вызов API Google. 2. Отформатируйте данные из запроса ajax. 3. Отправьте отформатированные данные в функцию загрузки.

Shahar 06.06.2018 16:15

Другие вопросы по теме