我按照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>
答案 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。