私の目的は、レイヤーグループを使用してリーフレットに追加されたマーカーをすべて削除することです。前のページで、マーカーの新しいレイヤーグループ(次のページのマーカー)を追加すると、ブラウザーでこのエラーが表示され、マーカーはマップに追加されません。リーフレットマップ - マーカーレイヤーグループを削除し、別のマーカーレイヤーグループを追加する
エラーは - Uncaught TypeError:layer.onAddは関数ではありません。
コードは、それが動作するマップ・コンテナを初期化した後、初めてaddMarkersListを呼び出すときに、上記のコードに問題がある
var leaflet_factory = {
//initializing map container
initialize: function() {
var map = L.map('mapresults');
var googleLayer = new L.Google('ROADMAP');
map.addLayer(googleLayer);
},
//set view of mao
setview: function(lat, long, zoom) {
map.setView([lat, long], zoom);
},
//add list of markers to maps
addMarkersList: function(marker_array) {
var markerArray = [];
$.each(marker_array, function(key, data) {
var marker_pointer = L.marker([data.lat, data.long]).bindPopup('<a href="/' + $(this).attr('data-slug') + '"><strong>' + $(this).attr('data-vendor').capitalize() + '</strong><br></a>' + $(this).attr('data-location').capitalize());
markerArray.push(marker_pointer);
});
window.page_makers_layer = L.layerGroup(markerArray);
window.page_makers_layer.addTo(map);
},
//remove the current marker layer group
removeMarkerLayer: function() {
map.removeLayer(window.page_makers_layer);
}
}
です。 しかし、既存のマーカーレイヤーを削除するremoveMarkerLayerを呼び出した後にaddMarkerListを新しいマーカーリスト(lat long pair)で呼び出すと、次のエラーが表示されてデバッグしようとしています。
Uncaught TypeError: layer.onAdd is not a function
私が間違っている箇所を指摘してください。
あなたに役立つ情報がまだありません。とにかく 'initialize'スコープ内で' map'を定義するのは非常に奇妙です。 – ghybs
ええ、それは悪いですが、これは実際のコードではありません。実際のコードは、現在チームに属していない他の人によって書かれた場合、さらに最悪です。教えてくれてありがとう。 – user3775217