diff --git a/server/src/queries/map.repository.sql b/server/src/queries/map.repository.sql
index 8b508b68ef..b3bb207946 100644
--- a/server/src/queries/map.repository.sql
+++ b/server/src/queries/map.repository.sql
@@ -13,10 +13,19 @@ from
   inner join "exif" on "assets"."id" = "exif"."assetId"
   and "exif"."latitude" is not null
   and "exif"."longitude" is not null
-  left join "albums_assets_assets" on "assets"."id" = "albums_assets_assets"."assetsId"
 where
   "isVisible" = $1
   and "deletedAt" is null
-  and "ownerId" in ($2)
+  and (
+    "ownerId" in ($2)
+    or exists (
+      select
+      from
+        "albums_assets_assets"
+      where
+        "assets"."id" = "albums_assets_assets"."assetsId"
+        and "albums_assets_assets"."albumsId" in ($3)
+    )
+  )
 order by
   "fileCreatedAt" desc
diff --git a/server/src/repositories/asset.repository.ts b/server/src/repositories/asset.repository.ts
index 123116c62f..e2851ef623 100644
--- a/server/src/repositories/asset.repository.ts
+++ b/server/src/repositories/asset.repository.ts
@@ -23,7 +23,6 @@ import {
   withTags,
 } from 'src/entities/asset.entity';
 import { AssetFileType, AssetOrder, AssetStatus, AssetType } from 'src/enum';
-import { MapMarker, MapMarkerSearchOptions } from 'src/repositories/map.repository';
 import { AssetSearchOptions, SearchExploreItem, SearchExploreItemSet } from 'src/repositories/search.repository';
 import { anyUuid, asUuid, mapUpsertColumns } from 'src/utils/database';
 import { Paginated, PaginationOptions, paginationHelper } from 'src/utils/pagination';
@@ -639,26 +638,6 @@ export class AssetRepository {
       .executeTakeFirst() as Promise<AssetEntity | undefined>;
   }
 
-  private getMapMarkers(ownerIds: string[], options: MapMarkerSearchOptions = {}): Promise<MapMarker[]> {
-    const { isArchived, isFavorite, fileCreatedAfter, fileCreatedBefore } = options;
-
-    return this.db
-      .selectFrom('assets')
-      .leftJoin('exif', 'assets.id', 'exif.assetId')
-      .select(['id', 'latitude as lat', 'longitude as lon', 'city', 'state', 'country'])
-      .where('ownerId', '=', anyUuid(ownerIds))
-      .where('latitude', 'is not', null)
-      .where('longitude', 'is not', null)
-      .where('isVisible', '=', true)
-      .where('deletedAt', 'is', null)
-      .$if(!!isArchived, (qb) => qb.where('isArchived', '=', isArchived!))
-      .$if(!!isFavorite, (qb) => qb.where('isFavorite', '=', isFavorite!))
-      .$if(!!fileCreatedAfter, (qb) => qb.where('fileCreatedAt', '>=', fileCreatedAfter!))
-      .$if(!!fileCreatedBefore, (qb) => qb.where('fileCreatedAt', '<=', fileCreatedBefore!))
-      .orderBy('fileCreatedAt', 'desc')
-      .execute() as Promise<MapMarker[]>;
-  }
-
   getStatistics(ownerId: string, { isArchived, isFavorite, isTrashed }: AssetStatsOptions): Promise<AssetStats> {
     return this.db
       .selectFrom('assets')
diff --git a/server/src/repositories/map.repository.ts b/server/src/repositories/map.repository.ts
index d813ff29f2..965e7ffd13 100644
--- a/server/src/repositories/map.repository.ts
+++ b/server/src/repositories/map.repository.ts
@@ -76,7 +76,7 @@ export class MapRepository {
     this.logger.log('Geodata import completed');
   }
 
-  @GenerateSql({ params: [[DummyValue.UUID], []] })
+  @GenerateSql({ params: [[DummyValue.UUID], [DummyValue.UUID]] })
   getMapMarkers(ownerIds: string[], albumIds: string[], options: MapMarkerSearchOptions = {}) {
     const { isArchived, isFavorite, fileCreatedAfter, fileCreatedBefore } = options;
 
@@ -89,25 +89,31 @@ export class MapRepository {
           .on('exif.longitude', 'is not', null),
       )
       .select(['id', 'exif.latitude as lat', 'exif.longitude as lon', 'exif.city', 'exif.state', 'exif.country'])
-      .leftJoin('albums_assets_assets', (join) => join.onRef('assets.id', '=', 'albums_assets_assets.assetsId'))
       .where('isVisible', '=', true)
       .$if(isArchived !== undefined, (q) => q.where('isArchived', '=', isArchived!))
       .$if(isFavorite !== undefined, (q) => q.where('isFavorite', '=', isFavorite!))
       .$if(fileCreatedAfter !== undefined, (q) => q.where('fileCreatedAt', '>=', fileCreatedAfter!))
       .$if(fileCreatedBefore !== undefined, (q) => q.where('fileCreatedAt', '<=', fileCreatedBefore!))
       .where('deletedAt', 'is', null)
-      .where((builder) => {
+      .where((eb) => {
         const expression: Expression<SqlBool>[] = [];
 
         if (ownerIds.length > 0) {
-          expression.push(builder('ownerId', 'in', ownerIds));
+          expression.push(eb('ownerId', 'in', ownerIds));
         }
 
         if (albumIds.length > 0) {
-          expression.push(builder('albums_assets_assets.albumsId', 'in', albumIds));
+          expression.push(
+            eb.exists((eb) =>
+              eb
+                .selectFrom('albums_assets_assets')
+                .whereRef('assets.id', '=', 'albums_assets_assets.assetsId')
+                .where('albums_assets_assets.albumsId', 'in', albumIds),
+            ),
+          );
         }
 
-        return builder.or(expression);
+        return eb.or(expression);
       })
       .orderBy('fileCreatedAt', 'desc')
       .execute() as Promise<MapMarker[]>;