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);
最初にマップにグループレイヤーを追加し、次にグループレイヤーにマーカーを追加してみました。
- アイコン変数がインスタンス化されます
- GroupLayer変数がインスタンス化されます
- GroupLayersがマップに追加されます
- マーカーはアイコンオプションで作成されます
- マーカーがGroupLayerに追加されます
そして、最初にグループレイヤーにマーカーを追加してから、マップにグループレイヤーを追加してみました。
- アイコン変数がインスタンス化されます
- GroupLayer変数がインスタンス化されます
- マーカーはアイコンオプションで作成されます
- マーカーがGroupLayerに追加されます
- GroupLayersがマップに追加されます