传单地图图块不会加载到Meteor Cordova应用程序上

时间:2015-04-21 00:15:35

标签: android cordova meteor leaflet mapbox

我正在构建一个meteor / cordova应用程序,该应用程序由带有Leaflet地图的模板组成,其中tile和图标由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
}

我应该说标记/弹出窗口显示正常(但是它们的图像不存在;一个小问题,我会尝试处理它),但地图似乎没有初始化。

我是否需要在Template.map.rendered代码之外创建地图? 我是否需要添加配置以使leaflet / mapbox能够与Cordova / android一起使用?

这里有任何帮助。

1 个答案:

答案 0 :(得分:1)

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

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

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

相关问题