我无法使用 esri 传单插件在 web 地图上渲染某些 ArcGis 服务图层。我可以运行 L.esri.query 并取回数据。此外,元数据返回没有错误的响应。我尝试使用 Esri Leaflet Renderers 插件来加载服务符号系统而不是自定义样式,但没有成功。我已将问题缩小到服务上提供的渲染器。不会渲染的图层在服务的绘图部分如下所示:
Drawing Info:
Renderer:
Unique Value Renderer:
Field 1: STR_TYPE
Field 2: null
Field 3: null
Field Delimiter: ,
成功渲染到地图的服务如下所示:
Drawing Info:
Renderer:
Simple Renderer:
我已经验证了字段 STR_TYPE 暴露在无法呈现的服务中。
Fields:
OBJECTID ( type: esriFieldTypeOID , alias: OBJECTID_1 )
STR_TYPE ( type: esriFieldTypeString , alias: STR_TYPE , length: 50 , Coded Values: [Catch basin: Catch basin] , [Junction box: Junction box] , [Drop inlet: Drop inlet] , ...15 more... )
对于服务上具有相同渲染器的任何几何类型,我都会得到相同的结果。
我的原型html:
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="assets/css/styles.css" />
<meta name='viewport' content='initial-scale=1,maximum-scale=1,user-scalable=no' />
<!-- Load Leaflet from CDN-->
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.0.1/dist/leaflet.css" />
<script src="https://unpkg.com/leaflet@1.0.1/dist/leaflet.js"></script>
<!-- Load Esri Leaflet -->
<script src="assets/dist/esri-leaflet.js"></script>
<!-- Esri Leaflet Renderers -->
<script src="https://unpkg.com/esri-leaflet-renderers@2.0.6"></script>
<!-- jquery -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<body>
<div id="map"></div>
<!-- main js file -->
<script src="assets/js/main.js?v="+Math.floor(Math.random() * 1001)></script>
</body>
</html>
我的 js(未显示实际服务 url):
var map = L.map('map', {
center: [lat, lng],
zoom: 10
});
var esriStreets = L.esri.basemapLayer('Streets').addTo(map);
var url = serviceurl;
var fl = L.esri.featureLayer({
url: url,
simplifyFactor: 1
}).addTo(map);
fl.metadata(function(error,metadata){
console.log(metadata);
});
尝试渲染自定义样式时,不包含渲染器插件,不存在simplifyFactor,并且pointToLayer 选项被添加到featureLayer,返回一个带有自定义样式的circleMarker。(这也不会渲染任何东西)。但是,在生产中,我可以选择一个形状所在的区域,然后我会取回数据。
任何帮助,将不胜感激。