This is how I do it:
Lua Code:
local function OrigProviderOnRemoved(self, mapCanvas)
-- temporary fix to prevent error when removing the original world quest provider, I've notified
-- Blizzard developers directly about this issue and it should be resolved soon™
local Map = self:GetMap()
Map:UnregisterCallback('SetFocusedQuestID', self.setFocusedQuestIDCallback)
Map:UnregisterCallback('ClearFocusedQuestID', self.clearFocusedQuestIDCallback)
Map:UnregisterCallback('SetBountyQuestID', self.setBountyQuestIDCallback)
MapCanvasDataProviderMixin.OnRemoved(self, mapCanvas)
end
for provider in next, WorldMapFrame.dataProviders do
if(provider.GetPinTemplate and provider.GetPinTemplate() == 'WorldMap_WorldQuestPinTemplate') then
-- BUG: the OnRemoved method is broken, so we replace it before we remove the provider
provider.OnRemoved = OrigProviderOnRemoved
WorldMapFrame:RemoveDataProvider(provider)
end
end
The reason I overwrite OnRemoved is because of a bug with the order of execution within it.
Whenever that is fixed, you can just do this:
Lua Code:
for provider in next, WorldMapFrame.dataProviders do
if(provider.GetPinTemplate and provider.GetPinTemplate() == 'WorldMap_WorldQuestPinTemplate') then
WorldMapFrame:RemoveDataProvider(provider)
end
end