Автономный рендеринг карты на вкладке Android

#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 при первой загрузке страницы или при наличии подключения к Интернету, а затем извлечь его из хранилища, когда вы находитесь в автономном режиме.