diff --git a/sijapi/routers/gis.py b/sijapi/routers/gis.py
index b9c43ee..3b5580d 100644
--- a/sijapi/routers/gis.py
+++ b/sijapi/routers/gis.py
@@ -125,17 +125,17 @@ async def get_last_location() -> Optional[Location]:
     
 
 async def generate_and_save_heatmap(
-        start_date: Union[str, int, datetime],
-        end_date: Optional[Union[str, int, datetime]] = None,
-        output_path: Optional[Path] = None
-    ) -> Path:
+    start_date: Union[str, int, datetime],
+    end_date: Optional[Union[str, int, datetime]] = None,
+    output_path: Optional[Path] = None
+) -> Optional[Path]:
     """
 Generate a heatmap for the given date range and save it as a PNG file.
 
 :param start_date: The start date for the map (or the only date if end_date is not provided)
 :param end_date: The end date for the map (optional)
 :param output_path: The path to save the PNG file (optional)
-:return: The path where the PNG file was saved
+:return: The path where the PNG file was saved, or None if no locations found
     """
     try:
         from staticmap import StaticMap, CircleMarker
@@ -149,7 +149,7 @@ Generate a heatmap for the given date range and save it as a PNG file.
 
         locations = await fetch_locations(start_date, end_date)
         if not locations:
-            raise ValueError("No locations found for the given date range")
+            return None
 
         # Calculate bounds
         lats = [loc.latitude for loc in locations]
@@ -157,10 +157,10 @@ Generate a heatmap for the given date range and save it as a PNG file.
         lat_diff = max(lats) - min(lats)
         lon_diff = max(lons) - min(lons)
         
-        # Calculate zoom level using system config
-        zoom = min(
+        # If all points at same location, use default zoom
+        zoom = 12 if (lat_diff == 0 and lon_diff == 0) else min(
             Gis.map.max_zoom,
-            int(math.log2(360 / max(lat_diff, lon_diff))) - 1
+            int(math.log2(360 / max(0.01, lat_diff, lon_diff))) - 1
         )
 
         # Create map with correct URL template
@@ -193,7 +193,6 @@ Generate a heatmap for the given date range and save it as a PNG file.
 
 
 
-
 async def generate_map(start_date: datetime, end_date: datetime, max_points: int):
     locations = await fetch_locations(start_date, end_date)
     if not locations: