将 ESRI 街道地图与传单配合使用



如何将 ESRI 街道地图 (https://leaflet-extras.github.io/leaflet-providers/preview/#filter=Esri.WorldStreetMap) 集成到我的传单 javascript 中。以下是我所做的,但地图没有加载。

<script src="https://unpkg.com/esri-leaflet@2.0.6"></script>
<script> var map = L.map('map1').setView([48.135, 11.582], 3);
L.esri.basemapLayer('Streets').addTo(map); 
     L.tileLayer('http://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map /MapServer/tile/{z}/{y}/{x}', {
attribution: 'Tiles &copy; Esri &mdash; Source: Esri, DeLorme, NAVTEQ, USGS,    Intermap, iPC, NRCAN, Esri Japan, METI, Esri China (Hong Kong), Esri (Thailand),  TomTom, 2012'}).addTO(map); 
您将

两种完全不同的技术混合在一起,以加载相同的切片地图服务。

使用 Esri

传单插件时,只需按名称提及 Esri 底图即可。当用户自动平移和缩放时,Leaflet 的归因控件将自动填充相关配额,以识别该区域中的数据提供者。

<link rel="stylesheet" href="https://unpkg.com/leaflet@1.0.2/dist/leaflet.css" />
<script src="https://unpkg.com/leaflet@1.0.2"></script>
<script src="https://unpkg.com/esri-leaflet@2.0.6"></script>
<script>
  var map = L.map("map").setView([37.75, -122.23], 10);
  L.esri.basemapLayer('Streets').addTo(map); 
</script>

第二种技术是使用 Leaflet 自己的 TileLayer 类来加载 Esri 底图。您在自己的尝试中有一个错字,但手动引用服务 url 并使用插件跳过肯定是有效的。

<link rel="stylesheet" href="https://unpkg.com/leaflet@1.0.2/dist/leaflet.css" />
<script src="https://unpkg.com/leaflet@1.0.2"></script>
<script>
var map = L.map("map").setView([37.75, -122.23], 10);
var serviceUrl = 'http://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer/tile/{z}/{y}/{x}';
var credits = 'Tiles &copy; Esri &mdash; Source: Esri, DeLorme, NAVTEQ, USGS, Intermap, iPC, NRCAN, Esri Japan, METI, Esri China (Hong Kong), Esri (Thailand), TomTom, 2012 etc. etc. etc.';
// not addTO(map)
L.tileLayer(serviceUrl, { attribution: credits }).addTo(map); 
</script>

无论采用哪种方法,在传单应用程序中显示 ArcGIS Online 服务时,Esri 都有两个要求

  1. 您需要一个(免费的)ArcGIS Online 帐户。
  2. 您必须显示"由 Esri 提供支持"识别所有数据提供者。

最新更新