#javascript #android #json #d3.js #geospatial
#javascript #Android #json #d3.js #геопространственный
Вопрос:
Я пытался отобразить карту в автономном режиме на устройстве Android. Я пытаюсь использовать для этого d3, и любые рекомендации и предложения помогут мне в этом.
Могу ли я использовать d3 и файлы geojson / topojson региона для построения карты в браузере? Однако есть ли способ сделать это без сервера приложений? На данный момент d3 считывает json через функцию d3.json(), которая сама по себе нуждается в сервере приложений. Есть ли способ, с помощью которого d3 может читать файл json непосредственно из локального пути к файлу вместо URL?
Любое другое направление подхода к этой проблеме будет оценено по достоинству. Ожидаю вашего ответа.
С уважением, Джонс
Ответ №1:
Это невозможно.
d3.json предназначен для загрузки данных через HTTP. В качестве обходного пути вы можете настроить локальный сервер для обслуживания данных по протоколу HTTP.
Комментарии:
1. Как мне настроить локальный сервер на устройстве Android?
2. на самом деле, по крайней мере, в osx и Windows вы можете загружать json, csv и подобные файлы из локальных каталогов, зависит от браузера, будут ли они загружены или нет (например, в Chrome внешние локальные файлы не загружаются, в то время как в Safari, internet Explorer и Firefox они загружаются)
Ответ №2:
Это возможно.Я сделал что-то вроде этого.
Что касается меня, я использовал сервер приложений, но я вставил строку JSON в HTML и извлек ее напрямую с помощью JavaScript. Код выглядит примерно так:
var root = treeData = JSON.parse($('#json').val());
function visit(parent, visitFn, childrenFn) {
//....
visit(treeData, function(d) {
//....
Комментарии:
1. Хорошо, вы знаете бесплатное приложение для веб-сервера для Android. Я знаю о серверах Ultimate, но срок действия приложения истекает через 7 дней. После чего нам нужно купить приложение.
2. О каком сервере вы говорите? Сервер, работающий на Android, или сервер, который взаимодействует с Android?
3. Сервер, работающий на Android.
4. Я не думаю, что это обычная практика. Да, вы можете настроить базу данных и локальное хранилище на Android, но запускать сервер на телефоне — плохая идея. Зачем именно вам нужен сервер на телефоне?
5. Ну, моя реальная потребность — иметь возможность считывать данные json в функцию javascript d3. Я могу просто включить весь файл в качестве переменной json в код, но я хочу знать, какие другие варианты возможны.
Ответ №3:
Рассматривали ли вы возможность использования такого подхода, как IndexedDB, для кэширования json? Таким образом, вы можете загрузить json в IndexedDB при первой загрузке страницы или при наличии подключения к Интернету, а затем извлечь его из хранилища, когда вы находитесь в автономном режиме.