【问题标题】:Offline map rendering on Android TabAndroid Tab 离线地图渲染
【发布时间】:2014-06-26 07:36:46
【问题描述】:

我一直在尝试在 Android 设备上离线渲染地图。我正在尝试为此使用 d3,任何线索和建议都将对我有所帮助。

我可以使用 d3 和该地区的 geojson/topojson 文件在浏览器上绘制地图吗?但是,有没有办法在没有应用服务器的情况下做到这一点?截至目前,d3 通过函数 d3.json() 读取 json,该函数本身需要一个应用服务器。有没有办法让d3直接从本地文件路径而不是URL读取json文件?

将不胜感激任何其他解决此问题的方向。等待你的回复。

问候, 琼斯

【问题讨论】:

    标签: javascript android json d3.js geospatial


    【解决方案1】:

    这是不可能的。

    d3.json 旨在通过 HTTP 加载数据。作为一种解决方法,您可以设置本地服务器以通过 HTTP 提供数据。

    【讨论】:

    • 如何在安卓设备上设置本地服务器?
    • 实际上,至少在 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) {
    //....
    

    【讨论】:

    • 好吧,你知道一个免费的安卓网络服务器应用程序吗?我知道 Ultimate Servers,但该应用程序将在 7 天内到期。之后我们需要购买应用程序。
    • 你说的是哪种服务器?在 Android 上运行的服务器还是与 Android 通信的服务器?
    • 运行在 Android 上的服务器。
    • 我认为这不是常见的做法。是的,您可以在 Android 上设置数据库和本地存储,但在手机上运行服务器并不是一个好主意。为什么您需要在手机上安装服务器?
    • 嗯,我的实际需要是能够将 json 数据读入 javascript d3 函数。我可以将整个文件作为 json 变量包含在代码中,但我想知道其他可能的选项。
    【解决方案3】:

    您是否考虑过使用 IndexedDB 之类的方法来缓存 json?这样,您可以在第一个页面加载时或在您有互联网连接时将 json 加载到 IndexedDB 中,然后在您离线时从商店中检索它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多