Proj4Leaflet无法使用各种磁贴服务器

时间:2015-12-01 17:07:41

标签: leaflet openstreetmap mapbox proj4js cartodb

我按照Proj4Leaflet主页上的介绍创建了一个基本的slippy-map及其示例投影(下面的代码)。这没有问题,但是正在使用维护Proj4Leafet的公司的磁贴服务器,特别是:http://api.geosition.com/tile/osm-bright-3006/{z}/{x}/{y}.png

当我尝试使用替代磁贴服务器时,例如Mapbox的https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token={accessToken}(我使用自己的令牌),CartoDB的http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png或OSM的http://a.tile.openstreetmap.org/{z}/{x}/{y}.png地图根本无法渲染我得到一张空白的灰色地图。

是否可以将其他磁贴服务器与Proj4Leaflet一起使用,或者我的配置中是否存在与它们不兼容的内容?

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="description" content="">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Leaflet GeoJSON</title>
    <link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet/v0.7.7/leaflet.css" />
    <link rel="stylesheet" href="css/style.css">
</head>
<body>

<div id="map"></div>

<script src="js/require.js"></script>
<script>

  requirejs.config({
    baseUrl: 'js',
    paths: {
      "leaflet": "http://cdn.leafletjs.com/leaflet/v0.7.7/leaflet"
    }
  });

requirejs(['leaflet', 'proj4', 'proj4leaflet'],
function (L, proj4, proj4leaflet) {

// SWEREF99 TM (EPSG:3006) with map's pixel origin at SWEREF99 TM coordinate (0, 0)
var crs = new L.Proj.CRS(
    'EPSG:3006',
    '+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',
    {
        resolutions: [8192, 4096, 2048, 1024, 512, 256, 128,
      64, 32, 16, 8, 4, 2, 1, 0.5],
        origin: [0, 0]
    });

var map = new L.map('map', 
  {
    center: [59.35, 18.066667],
    zoom: 10,
    maxZoom: 14,
    minZoom: 0,
    crs: crs
  });

L.tileLayer('http://api.geosition.com/tile/osm-bright-3006/{z}/{x}/{y}.png', {
  maxZoom: crs.options.resolutions.length,
  minZoom: 0,
  continuousWorld: true,
  attribution: 'Map data © <a href="http://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>, Imagery © 2013 <a href="http://www.kartena.se/">Kartena</a>'
}).addTo(map);

});

</script>

</body>
</html>

2 个答案:

答案 0 :(得分:3)

Proj4Leaflet是一个Leaflet插件,适用于需要使用Leaflet不支持的坐标参照系(CRS)的情况。几乎每个瓷砖供应商都使用EPSG3857,这是Leaflet的默认CRS:

  

在线地图最常见的CRS,几乎所有免费和商业磁贴提供商都使用它。使用球形墨卡托投影。默认情况下在Map的crs选项中设置。

Mapbox,CartoDB和OSM都提供EPSG3857 tilesets。从Mapbox的帮助页面:

  

Mapbox支持流行的Web Mercator投影,目前不支持任何其他投影作为输出。 Web Mercator是一种近乎共形的投影,被绝大多数Web地图采用,它的使用允许您将Mapbox的地图与同一投影中的其他图层相结合。通常,此预测称为EPSG:900913或EPSG:3857。

https://www.mapbox.com/help/projection-support/

不看我打赌你会在CartoDB和OSM上找到相同的答案。如果您需要使用EPSG3006,您需要坚持在该投影中为瓷砖提供服务的供应商。这是一个:http://maps.omniscale.com/en/openstreetmap/epsg-3006

答案 1 :(得分:1)

Mapbox只会在Web Mercator中提供图块(EPSG:3857)。要将proj4Leaflet与平铺数据一起使用,您需要已经投影过的图块(例如NASA在极点的立体投影中提供平铺地图)。您将需要找到或建立一个瓷砖服务器,该服务器设置为在您所需的预测中输出(EPSG:3006)。

然而,

proj4将动态转换矢量数据,例如geojson。

相关问题