diff --git a/src/QtLocationPlugin/QGCMapUrlEngine.cpp b/src/QtLocationPlugin/QGCMapUrlEngine.cpp
index cc6be0266abe9e6a067437a03b059faf67ce43e7..31513f329d60eb39606c6b822ebc2ba41a75b537 100644
--- a/src/QtLocationPlugin/QGCMapUrlEngine.cpp
+++ b/src/QtLocationPlugin/QGCMapUrlEngine.cpp
@@ -155,6 +155,17 @@ QString UrlFactory::getTypeFromId(int id) {
     return "";
 }
 
+MapProvider* UrlFactory::getMapProviderFromId(int id)
+{
+    QString type = getTypeFromId(id);
+    if (!type.isEmpty()) {
+        if (_providersTable.find(type) != _providersTable.end()) {
+            return _providersTable[type];
+        }
+    }
+    return nullptr;
+}
+
 // Todo : qHash produce a uint bigger than max(int)
 // There is still a low probability for this to
 // generate similar hash for different types
diff --git a/src/QtLocationPlugin/QGCMapUrlEngine.h b/src/QtLocationPlugin/QGCMapUrlEngine.h
index 6809926d92d849a81b62597223c4d9fe5a43341a..898cf4747043cadddf55cdfd0fcb42783e24eab2 100644
--- a/src/QtLocationPlugin/QGCMapUrlEngine.h
+++ b/src/QtLocationPlugin/QGCMapUrlEngine.h
@@ -48,6 +48,7 @@ public:
 
     int getIdFromType(QString type);
     QString getTypeFromId(int id);
+    MapProvider* getMapProviderFromId(int id);
 
     QGCTileSet getTileCount(int zoom, double topleftLon, double topleftLat,
                             double bottomRightLon, double bottomRightLat,