1

Proj4Leafletのホームページの紹介に従って、サンプル プロジェクション (以下のコード) を使用して基本的なスリッピー マップを作成しました。これは問題なく動作していますが、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>
4

2 に答える 2

4

Proj4Leaflet は、そのままでは Leaflet でサポートされていない座標参照系 (CRS) を使用する必要がある場合に使用するための Leaflet プラグインです。そこにあるほとんどすべての tileprovider は、Leaflet のデフォルト CRS である EPSG3857 を使用します。

オンライン マップの最も一般的な CRS であり、ほぼすべての無料および商用のタイル プロバイダーで使用されています。球状メルカトル図法を使用します。Map の crs オプションでデフォルトで設定されます。

Mapbox、CartoDB、OSM はすべて EPSG3857 タイルセットを提供します。Mapbox のヘルプ ページから:

Mapbox は一般的な Web メルカトル図法をサポートしていますが、現在、出力として他の投影法をサポートしていません。Web メルカトルは、大多数の Web マップで採用されているほぼ正角図法であり、これを使用すると、Mapbox のマップを同じ投影法で他のレイヤーと組み合わせることができます。一般に、この投影法は EPSG:900913 または EPSG:3857 と呼ばれます。

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

見なくても、CartoDB と OSM で同じ答えが見つかるはずです。EPSG3006 を使用する必要がある場合は、そのプロジェクションでタイルを提供するプロバイダーに固執する必要があります。ここに 1 つ: http://maps.omniscale.com/en/openstreetmap/epsg-3006

于 2015-12-01T17:34:06.443 に答える
2

Mapbox は、Web メルカトル (EPSG:3857) のタイルのみを提供します。タイル データで proj4Leaflet を使用するには、既に投影されているタイルが必要です (たとえば、NASAは極の平射図法でタイル マップを提供しています)。希望するプロジェクション (EPSG:3006) で出力するように設定されたタイル サーバーを見つけるか、確立する必要があります。

ただし、proj4 は geojson などのベクター データをオンザフライで変換します。

于 2015-12-01T17:28:00.950 に答える