android - 传单 map 图 block 不会在 Meteor Cordova 应用程序上加载

标签 android cordova meteor leaflet mapbox

我正在构建一个 meteor/cordova 应用程序,它包含一个带有传单 map 的模板,其中的图 block 和图标由 mapbox 提供(我不确定它是否相关)。

该应用程序使用 bevanhunt:leaflet 包,部署在网络浏览器上时运行良好。

var map; //outside of the template

Template.map.rendered = function() {
    L.Icon.Default.imagePath = 'images';

    if (!map) {
        map = L.map('map', {
            doubleClickZoom: false,
            zoomControl: false
        });
    }

    var attributionText = "<a href='http://zencity.io/' target='_blank'>ZenCity &copy; </a>" +
    "<a href='https://www.mapbox.com/about/maps/' target='_blank'> Mapbox &copy;" +
    " OpenStreetMap</a>";

     L.tileLayer('https://{s}.tiles.mapbox.com/v3/{id}/{z}/{x}/{y}.png', {
        maxZoom: 18,
        attribution: attributionText,
        id: 'someID'
    }).addTo(map);
  //some code to put makers on the map
}

我应该说标记/弹出窗口看起来很好(但它们的图像不存在;一个小问题,我会尽力解决),但 map 似乎没有初始化。

我是否需要在 Template.map.rendered 代码之外创建 map ? 我是否需要添加配置才能使 leaflet/mapbox 与 Cordova/android 一起工作?

如有任何帮助,我们将不胜感激。

最佳答案

Meteor 1.0.4 introduced App.accessRule 设置为 mobile-config.js。您需要像这样向其中添加磁贴提供程序的 URL:

App.accessRule('https://*.tiles.mapbox.com/*');

基本上,出于安全原因,Cordova 应用程序可能不会连接到它们喜欢的任何 URL。这就是这个白名单的用途。它限制了可以加载哪些 URL 内容。由于磁贴 URL 与您的应用程序 URL 不同,它在默认情况下会被拒绝。使用 App.accessRule 设置您可以允许其他 URL。 Android 和 iOS 支持的域模式略有不同,您可以在 the official docs 中找到它们.星号 (*) 可以(而且必须)用作通配符,此处用于支持动态子域。

关于android - 传单 map 图 block 不会在 Meteor Cordova 应用程序上加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29760671/

相关文章:

java - 我怎样才能在android中取消注册接收器?

cordova - ionic 2 : invalid page component: null

javascript - Cordova/UWP - 如何顺序处理 Promise 并编写例程来递归复制文件夹

android - 无法加载资源:net::ERR_FILE_NOT_FOUND ionic 错误

Meteor 助手运行多次

javascript - Meteor <Object> 没有方法 'subscribe' 。关于最新的 meteor 更新

javascript - "Can' t wait without a Fiber”查询数据库时出错?

android - 发布仅适用于手机的 Android 应用程序

android - 运行应用程序时找不到 EasyPermissions 库错误?

java - 显式和隐式 Intent