esri-leaflet
Version:
Leaflet plugins for consuming ArcGIS Online and ArcGIS Server services.
309 lines (257 loc) • 16.6 kB
HTML
<!--[if lt IE 7 ]> <html class="ie6"> <![endif]-->
<!--[if IE 7 ]> <html class="ie7"> <![endif]-->
<!--[if IE 8 ]> <html class="ie8"> <![endif]-->
<!--[if IE 9 ]> <html class="ie9"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html class="not-ie"> <!--<![endif]-->
<head>
<meta charset="utf-8">
<title>Non-mercator projection | Esri Leaflet</title>
<meta name="description" content="Using non mercator tiles with <code>L.esri.Layers.TiledMapLayer</code> with the <a href="https://github.com/kartena/Proj4Leaflet">Proj4Leaflet</a> plugin. <br><br> <strong>This demo should be implemented at your own risk. Esri Leaflet only supports tiles that have been published in Web Mercator Auxiliary Sphere tiling scheme (WKID 102100/3857) at the default scales and resolutions. Strong knowledge of projections, spatial references and tiling schemes is required for this.</strong>">
<meta name="description" content="Esri Leaflet">
<meta name="viewport" content="width=device-width">
<!--[if lt IE 9]>
<script src="//cdn.jsdelivr.net/html5shiv/3.7.2/html5shiv-printshiv.js"></script>
<![endif]-->
<!-- google fonts -->
<link href='//fonts.googleapis.com/css?family=Vollkorn:400italic,700italic,400,700' rel='stylesheet' type='text/css'>
<link rel="stylesheet" href="//brick.a.ssl.fastly.net/Source+Code+Pro:300">
<link href='//fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic' rel='stylesheet' type='text/css'>
<!-- stylesheet -->
<link rel="stylesheet" href="../css/style.css">
<!-- leaflet -->
<link rel="stylesheet" href="//cdn.jsdelivr.net/leaflet/0.7.7/leaflet.css" />
<!-- require combined leaflet, esri leaflet and jsdelivr-rum -->
<script src="//cdn.jsdelivr.net/leaflet/0.7.7/leaflet.js"></script>
<!--script src="//cdn.jsdelivr.net/leaflet.esri/1.0.3/esri-leaflet.js"></script-->
<script src="../../js/esri-leaflet-src.js"></script>
<script src="//cdn.jsdelivr.net/jsdelivr-rum/latest/jsdelivr-rum.min.js"></script>
<!-- 'livereload' for development -->
<script src="//localhost:35729/livereload.js"></script>
<!-- Google Analytics -->
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-44963317-3', 'auto');
ga('send', 'pageview');
</script>
<!-- End Google Analytics -->
</head>
<body>
<div class="page-content ">
<div class="container">
<a class="site-nav" href="../" class="left logo">Esri Leaflet</a>
<nav class="right">
<a class="site-nav" href="../examples/">Examples</a>
<a class="site-nav" href="../api-reference/">API Reference</a>
<a class="site-nav" href="../download/">Download</a>
<a class="site-nav" href="https://github.com/Esri/esri-leaflet">View on GitHub</a>
</nav>
</div>
<div id="background-map" class="background-map"></div>
<div class="container white">
<aside class="sidebar">
<h5>Basemaps</h5>
<nav>
<a href="../examples/showing-a-basemap.html">Showing an ArcGIS basemap</a>
<a href="../examples/basemap-with-labels.html">Basemap with labels</a>
<a href="../examples/switching-basemaps.html">Switching basemaps</a>
<a href="../examples/retina-basemap.html">Retina Basemap</a>
</nav>
<h5>Feature Layers</h5>
<nav>
<a href="../examples/simple-feature-layer.html">Simple FeatureLayer</a>
<a href="../examples/styling-feature-layer-points.html">Styling points</a>
<a href="../examples/styling-feature-layer-polylines.html">Styling lines</a>
<a href="../examples/styling-feature-layer-polygons.html">Styling polygons</a>
<a href="../examples/feature-layer-popups.html">Custom popups</a>
<a href="../examples/querying-feature-layers-1.html">Querying features #1</a>
<a href="../examples/querying-feature-layers-2.html">Querying features #2</a>
<a href="../examples/spatial-queries.html">Spatial Queries</a>
<a href="../examples/simplifying-complex-features.html">Simplifying complex features</a>
<a href="../examples/zooming-to-all-features-1.html">Zoom to all features #1</a>
<a href="../examples/zooming-to-all-features-2.html">Zoom to all features #2</a>
<a href="../examples/labeling-features.html">Labeling Features</a>
<a href="../examples/clustering-feature-layers.html">Clustering points</a>
<a href="../examples/styling-clusters.html">Styling clusters</a>
<a href="../examples/visualize-points-as-a-heatmap.html">Points as a heatmap</a>
<a href="../examples/styling-heatmaps.html">Styling heatmaps</a>
<a href="../examples/visualizing-time-with-feature-layer.html">Time enabled services</a>
<a href="../examples/feature-layer-snapshot.html">Layer "snapshots"</a>
<a href="../examples/editing.html">Editing</a>
</nav>
<h5>Tile Layers</h5>
<nav>
<a href="../examples/tile-layer-1.html">Tiles from a Map Service #1</a>
<a href="../examples/tile-layer-2.html">Tiles from a Map Service #2</a>
<a href="../examples/non-mercator-projection.html">Non-mercator tiles</a>
</nav>
<h5>Dynamic Map Layer</h5>
<nav>
<a href="../examples/simple-dynamic-map-layer.html">Simple DynamicMapLayer</a>
<a href="../examples/identifying-features.html">Identifying Features</a>
<a href="../examples/finding-features.html">Finding Features</a>
<a href="../examples/customizing-popups.html">Custom popups</a>
<a href="../examples/visualizing-time-on-dynamic-map-layer.html">Time Ranges</a>
<a href="../examples/dynamic-map-layer-reprojected.html">Reprojecting on the fly</a>
</nav>
<h5>Image Map Layer</h5>
<nav>
<a href="../examples/simple-image-map-layer.html">Simple ImageMapLayer</a>
<a href="../examples/infrared-imagery.html">Infrared Imagery using BandIDs</a>
<a href="../examples/image-map-layer-rendering-rule.html">Rendering Rule</a>
<a href="../examples/identifying-imagery.html">Identify Imagery</a>
<a href="../examples/image-map-layer-mosaic-rule.html">Mosaic Rule</a>
<a href="../examples/imagery-popups.html">Custom popups</a>
</nav>
<h5>Authentication</h5>
<nav>
<a href="../examples/arcgis-online-auth.html">ArcGIS Online OAuth</a>
<a href="../examples/premium-content.html">Premium ArcGIS Online content</a>
<a href="../examples/arcgis-server-auth.html">ArcGIS Server username/password</a>
</nav>
<h5>Geocoding</h5>
<nav>
<a href="../examples/geocoding-control.html">Geocoding control</a>
<a href="../examples/search-map-service.html">Searching map service</a>
<a href="../examples/search-feature-layer.html">Searching feature layers</a>
<a href="../examples/center-map-on-address.html">Center the initial map state</a>
<a href="../examples/reverse-geocoding.html">Reverse geocoding</a>
</nav>
<h5>Other Plugins</h5>
<nav>
<a href="../examples/gp-plugin.html">Geoprocessing plugin</a>
<a href="../examples/renderers-plugin.html">Renderers plugin</a>
</nav>
<h5>Misc.</h5>
<nav>
<a href="../examples/getting-service-metadata.html">Getting service metadata</a>
<a href="../examples/parse-feature-collection.html">Parsing Feature Collections</a>
</nav>
</aside>
<div class="example-content">
<div class="wrap">
<h1>Non-mercator projection</h1>
<p>Using non mercator tiles with <code>L.esri.Layers.TiledMapLayer</code> with the <a href="https://github.com/kartena/Proj4Leaflet">Proj4Leaflet</a> plugin. <br><br> <strong>This demo should be implemented at your own risk. Esri Leaflet only supports tiles that have been published in Web Mercator Auxiliary Sphere tiling scheme (WKID 102100/3857) at the default scales and resolutions. Strong knowledge of projections, spatial references and tiling schemes is required for this.</strong></p>
</div>
<div id="map-wrapper">
<script src="//cdnjs.cloudflare.com/ajax/libs/proj4js/2.0.0/proj4.js"></script>
<script src="https://cdn.rawgit.com/kartena/Proj4Leaflet/0.7.0/src/proj4leaflet.js"></script>
<div id="map"></div>
<script>
/*
create new Proj4Leaflet CRS:
1. Proj4 and WKT definitions can be found at sites like http://epsg.io
2. appropriate values to supply to the resolution and origin constructor options can be found in the ArcGIS Server RESTful tile server endpoint (ex: http://mapserv.utah.gov/arcgis/rest/services/BaseMaps/Terrain/MapServer)
*/
var crs = new L.Proj.CRS('EPSG:26912', '+proj=utm +zone=12 +ellps=GRS80 +datum=NAD83 +units=m +no_defs', {
origin: [-5120900, 9998100],
resolutions: [
4891.96999883583,
2445.98499994708,
1222.99250010583,
611.496250052917,
305.748124894166,
152.8740625,
76.4370312632292,
38.2185156316146,
19.1092578131615,
9.55462890525781,
4.77731445262891,
2.38865722657904,
1.19432861315723,
0.597164306578613,
0.298582153289307
]
});
var map = L.map('map', {
crs: crs
}).setView([40.381, -111.859], 5);
/*
The min/maxZoom values provided should match the actual cache thats been published. This information can be retrieved from the service endpoint directly.
*/
L.esri.tiledMapLayer({
url: 'http://mapserv.utah.gov/arcgis/rest/services/BaseMaps/Terrain/MapServer',
maxZoom: 14,
minZoom: 0,
continuousWorld: true,
attribution: 'State of Utah'
}).addTo(map);
</script>
</div>
<pre><code class="language-xml"><span class="tag"><<span class="title">html</span>></span>
<span class="tag"><<span class="title">head</span>></span>
<span class="tag"><<span class="title">meta</span> <span class="attribute">charset</span>=<span class="value">utf-8</span> /></span>
<span class="tag"><<span class="title">title</span>></span>Non-mercator projection<span class="tag"></<span class="title">title</span>></span>
<span class="tag"><<span class="title">meta</span> <span class="attribute">name</span>=<span class="value">'viewport'</span> <span class="attribute">content</span>=<span class="value">'initial-scale=1,maximum-scale=1,user-scalable=no'</span> /></span>
<span class="comment"><!-- Load Leaflet from CDN--></span>
<span class="tag"><<span class="title">link</span> <span class="attribute">rel</span>=<span class="value">"stylesheet"</span> <span class="attribute">href</span>=<span class="value">"//cdn.jsdelivr.net/leaflet/0.7.3/leaflet.css"</span> /></span>
<span class="tag"><<span class="title">script</span> <span class="attribute">src</span>=<span class="value">"//cdn.jsdelivr.net/leaflet/0.7.3/leaflet.js"</span>></span><span class="javascript"></span><span class="tag"></<span class="title">script</span>></span>
<span class="comment"><!-- Load Esri Leaflet from CDN --></span>
<span class="tag"><<span class="title">script</span> <span class="attribute">src</span>=<span class="value">"//cdn.jsdelivr.net/leaflet.esri/1.0.3/esri-leaflet.js"</span>></span><span class="javascript"></span><span class="tag"></<span class="title">script</span>></span>
<span class="tag"><<span class="title">style</span>></span><span class="css">
<span class="tag">body</span> <span class="rules">{ <span class="rule"><span class="attribute">margin</span>:<span class="value"><span class="number">0</span></span></span>; <span class="rule"><span class="attribute">padding</span>:<span class="value"><span class="number">0</span></span></span>; <span class="rule">}</span></span>
<span class="id">#map</span> <span class="rules">{ <span class="rule"><span class="attribute">position</span>:<span class="value"> absolute</span></span>; <span class="rule"><span class="attribute">top</span>:<span class="value"><span class="number">0</span></span></span>; <span class="rule"><span class="attribute">bottom</span>:<span class="value"><span class="number">0</span></span></span>; <span class="rule"><span class="attribute">right</span>:<span class="value"><span class="number">0</span></span></span>; <span class="rule"><span class="attribute">left</span>:<span class="value"><span class="number">0</span></span></span>; <span class="rule">}</span></span>
</span><span class="tag"></<span class="title">style</span>></span>
<span class="tag"></<span class="title">head</span>></span>
<span class="tag"><<span class="title">body</span>></span>
<span class="tag"><<span class="title">script</span> <span class="attribute">src</span>=<span class="value">"//cdnjs.cloudflare.com/ajax/libs/proj4js/2.0.0/proj4.js"</span>></span><span class="javascript"></span><span class="tag"></<span class="title">script</span>></span>
<span class="tag"><<span class="title">script</span> <span class="attribute">src</span>=<span class="value">"https://cdn.rawgit.com/kartena/Proj4Leaflet/0.7.0/src/proj4leaflet.js"</span>></span><span class="javascript"></span><span class="tag"></<span class="title">script</span>></span>
<span class="tag"><<span class="title">div</span> <span class="attribute">id</span>=<span class="value">"map"</span>></span><span class="tag"></<span class="title">div</span>></span>
<span class="tag"><<span class="title">script</span>></span><span class="javascript">
<span class="comment">/*
create new Proj4Leaflet CRS:
1. Proj4 and WKT definitions can be found at sites like http://epsg.io
2. appropriate values to supply to the resolution and origin constructor options can be found in the ArcGIS Server RESTful tile server endpoint (ex: http://mapserv.utah.gov/arcgis/rest/services/BaseMaps/Terrain/MapServer)
*/</span>
<span class="keyword">var</span> crs = <span class="keyword">new</span> L.Proj.CRS(<span class="string">'EPSG:26912'</span>, <span class="string">'+proj=utm +zone=12 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'</span>, {
origin: [-<span class="number">5120900</span>, <span class="number">9998100</span>],
resolutions: [
<span class="number">4891.96999883583</span>,
<span class="number">2445.98499994708</span>,
<span class="number">1222.99250010583</span>,
<span class="number">611.496250052917</span>,
<span class="number">305.748124894166</span>,
<span class="number">152.8740625</span>,
<span class="number">76.4370312632292</span>,
<span class="number">38.2185156316146</span>,
<span class="number">19.1092578131615</span>,
<span class="number">9.55462890525781</span>,
<span class="number">4.77731445262891</span>,
<span class="number">2.38865722657904</span>,
<span class="number">1.19432861315723</span>,
<span class="number">0.597164306578613</span>,
<span class="number">0.298582153289307</span>
]
});
<span class="keyword">var</span> map = L.map(<span class="string">'map'</span>, {
crs: crs
}).setView([<span class="number">40.381</span>, -<span class="number">111.859</span>], <span class="number">5</span>);
<span class="comment">/*
The min/maxZoom values provided should match the actual cache thats been published. This information can be retrieved from the service endpoint directly.
*/</span>
L.esri.tiledMapLayer({
url: <span class="string">'http://mapserv.utah.gov/arcgis/rest/services/BaseMaps/Terrain/MapServer'</span>,
maxZoom: <span class="number">14</span>,
minZoom: <span class="number">0</span>,
continuousWorld: <span class="literal">true</span>,
attribution: <span class="string">'State of Utah'</span>
}).addTo(map);
</span><span class="tag"></<span class="title">script</span>></span>
<span class="tag"></<span class="title">body</span>></span>
<span class="tag"></<span class="title">html</span>></span></code></pre>
<div class="wrap">
<p><a href="http://github.com/esri/esri-leaflet/edit/master/site/source/pages/examples/non-mercator-projection.hbs">Edit this sample on GitHub</a></p>
</div>
</div>
<div style='clear:both;'></div>
</div>
<div class="container centered-text">
<p class="copyright">Esri Leaflet is a project from the <a href="http://pdx.esri.com">Esri PDX R&D Center</a> and the <a href="https://github.com/Esri/esri-leaflet/graphs/contributors">Esri Community</a></p>
</div>
</div>
<script src="../js/script.js"></script>
</body>
</html>