【问题标题】:Leaflet error: Object function has no method 'createIcon' when creating custom icon markers in LayerGroup传单错误:在 LayerGroup 中创建自定义图标标记时,对象函数没有方法“createIcon”
【发布时间】:2012-07-14 22:55:34
【问题描述】:

我正在从 XML 流创建标记,并在其中设置自定义图标。我想将我的标记放在图层组中,这样我就可以支持关闭某种类型的所有标记。当我使用自定义图标向地图添加标记(使用 GroupLayer)时收到以下错误:

未捕获的类型错误:对象函数 (){this.initialize&&this.initialize.apply(this,arguments)} 没有 方法'createIcon'

示例图标

 var ATVIcon = L.Icon.extend({
     iconUrl: './markers/atv.png',
     shadowUrl: '',
     iconSize: new L.Point(27, 17),
     shadowSize: new L.Point(0, 0),
     iconAnchor: new L.Point(22, 22),
     popupAnchor: new L.Point(-3, -76)
 });

示例层

var layerATV = new L.LayerGroup();

为地图或图层组添加标记

var thisMarker = new L.Marker(markerLocation, {title: $(this).attr('name')});
    targetLayerGroup.addLayer(thisMarker);
    thisMarker.setIcon(targetIcon);

我尝试先将图层组添加到地图,然后将标记添加到图层组:

  1. 图标变量被实例化
  2. GroupLayer 变量被实例化
  3. GroupLayers 已添加到地图中
  4. 使用图标选项创建标记
  5. 标记已添加到 GroupLayer

我已经尝试先将标记添加到图层组,然后将图层组添加到地图:

  1. 图标变量被实例化
  2. GroupLayer 变量被实例化
  3. 使用图标选项创建标记
  4. 标记已添加到 GroupLayer
  5. GroupLayers 被添加到地图中

【问题讨论】:

    标签: javascript leaflet


    【解决方案1】:

    在引用图标时,您需要在更新它们时加上括号,而不是仅仅分配给变量...

    case 'church':
        targetLayerGroup = layerChurch;
        targetIcon = new ChurchIcon();
        break;
    

    相对于:

    case 'church':
        targetLayerGroup = layerChurch;
        targetIcon = ChurchIcon;
        break;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-23
      • 2018-01-14
      • 2020-01-29
      • 1970-01-01
      • 1970-01-01
      • 2014-07-26
      相关资源
      最近更新 更多