jquery - 传单 map 网址被禁止

标签 jquery mobile cloudmade leaflet

我正在尝试创建一个 jquery mobile PhoneGap 应用程序,并且我想使用嵌入其中的传单 map 。我目前正在做一个非常基本的概念验证,但我运气不太好。每次我尝试加载 map 时, map 的 .png 都不会加载,并且控制台告诉我它是禁止的。我想我可能设置了错误的 map URL,但 CloudMade 网站上的文档有点模糊。如果您能提供任何帮助,我们将不胜感激。

代码:

var map = new L.Map('map');

var cloudmadeUrl = 'http://{s}.tile.cloudmade.com/MY_APP_KEY/997/256/{z}/{x}/{y}.png',
    cloudmade = new L.TileLayer(cloudmadeUrl, {maxZoom: 18});
map.addLayer(cloudmade);

map.locateAndSetView(16);

map.on('locationfound', onLocationFound);

function onLocationFound(e) {
    var radius = e.accuracy / 2;

    var marker = new L.Marker(e.latlng);
    map.addLayer(marker);
    marker.bindPopup("You are within " + radius + " meters from this point").openPopup();

    var circle = new L.Circle(e.latlng, radius);
    map.addLayer(circle);
}

map.on('locationerror', onLocationError);

function onLocationError(e) {
    alert(e.message);
}

当我尝试加载图像时,出现以下错误:GET http://a.tile.cloudmade.com/MY_APP_KEY/997/256/0/0/0.png 403(禁止)。显然,我正在用从 CloudMade 获得的 key 替换 MY_APP_KEY,但除此之外,我不确定还能转向哪里。

预先感谢您的帮助。

最佳答案

提供 Cloudmade API key 是强制性的,但还不够。您还必须提供一个 token ,您必须为每个用户和设备请求该 token 。如 Cloudmade Authorization API doc 中所述可以通过简单的 POST 检索 token :

POST http://auth.cloudmade.com/token/APIKEY?userid=UserID&deviceid=DeviceID

这将为您提供一个 token ,您必须将其附加到图 block url 中才能在 cloudmade 服务器上进行身份验证:

var cloudmadeUrl = 'http://{s}.tile.cloudmade.com/MY_APP_KEY/997/256/{z}/{x}/{y}.png?token=TOKEN'

但是,为了快速证明概念,您可以直接使用 their own API key不需要身份验证 token :

var cloudmadeUrl = 'http://{s}.tile.cloudmade.com/8ee2a50541944fb9bcedded5165f09d9/997/256/{z}/{x}/{y].png

关于jquery - 传单 map 网址被禁止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11517068/

相关文章:

android - 如何在网页上创建一个 "Send to Mobile"按钮?

iphone - 如何在 iPhone 应用程序中使用离线 Cloudmade map

javascript - 如何使用 Javascript 访问现有的传单 map 多段线,然后对其进行动画处理?

php - jQuery Mobile 中的 JavaScript 表单验证

android - MoSync 体验

javascript - 我创建了一个下拉列表,如何显示所选项目的其他列数据?

jquery - jRange范围选择器设置值问题

iphone - 在 iPhone 中计算行驶距离

jquery - 当子菜单项处于事件状态并保持子菜单打开时,使用 jquery 突出显示父级

javascript - 使用 jQuery 删除 div 不适用于动态添加的 div