3

XMLストリームからマーカーを作成し、それらにカスタムアイコンを設定しています。特定のタイプのすべてのマーカーをオフにすることをサポートできるように、マーカーをグループレイヤーに配置したいと思います。カスタムアイコンを使用して(GroupLayerを使用して)マップにマーカーを追加すると、次のエラーが発生します。

Uncaught TypeError:Object function(){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();

マップまたは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がマップに追加されます
4

1 に答える 1

3

アイコンを参照するときは、変数に割り当てるだけでなく、アイコンを新しくするときに括弧を付ける必要があります...

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

とは対照的に:

case 'church':
    targetLayerGroup = layerChurch;
    targetIcon = ChurchIcon;
    break;
于 2012-07-15T02:13:59.030 に答える