0

我无法使用 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。(这也不会渲染任何东西)。但是,在生产中,我可以选择一个形状所在的区域,然后我会取回数据。

任何帮助,将不胜感激。

4

0 回答 0