diff --git a/frontend/src/metabase/visualizations/components/PinMap.jsx b/frontend/src/metabase/visualizations/components/PinMap.jsx
index bec0d65f4249637c30baf303c08ed3d9fd1fdbb3..496756109f23aae0c378e1663398ca211b517da4 100644
--- a/frontend/src/metabase/visualizations/components/PinMap.jsx
+++ b/frontend/src/metabase/visualizations/components/PinMap.jsx
@@ -132,9 +132,13 @@ export default class PinMap extends Component {
     ]);
 
     // only use points with numeric coordinates & metric
-    const validPoints = allPoints.map(
-      ([lat, lng, metric]) => lat != null && lng != null && metric != null,
-    );
+    const validPoints = allPoints.map(([lat, lng, metric]) => {
+      if (settings["map.type"] === "pin") {
+        return lat != null && lng != null;
+      }
+
+      return lat != null && lng != null && metric != null;
+    });
     const points = allPoints.filter((_, i) => validPoints[i]);
     const updatedRows = rows.filter((_, i) => validPoints[i]);
 
diff --git a/frontend/src/metabase/visualizations/components/PinMap.unit.spec.js b/frontend/src/metabase/visualizations/components/PinMap.unit.spec.js
index ed73b523b4eb970ce915098b740d5a4a9dfef151..3f9a2128d82cfcc36ec28246a33f5c8cb49c9afe 100644
--- a/frontend/src/metabase/visualizations/components/PinMap.unit.spec.js
+++ b/frontend/src/metabase/visualizations/components/PinMap.unit.spec.js
@@ -1,7 +1,7 @@
 import PinMap from "metabase/visualizations/components/PinMap";
 
 describe("PinMap", () => {
-  it("should filter out rows with null values", () => {
+  it("should filter out rows with null values in either the lat, long, or metric column", () => {
     const onUpdateWarnings = jest.fn();
     const data = {
       cols: ["lat", "lng", "metric"].map(name => ({ name })),
@@ -28,4 +28,38 @@ describe("PinMap", () => {
       "We filtered out 3 row(s) containing null values.",
     ]);
   });
+
+  it("should filter out rows only if the lat or long values are null for pin maps", () => {
+    const onUpdateWarnings = jest.fn();
+    const data = {
+      cols: ["lat", "lng", "metric"].map(name => ({ name })),
+      rows: [
+        [null, 0, 0],
+        [0, null, 0],
+        [0, 0, null],
+        [1, 2, null],
+        [0, 0, 0],
+      ],
+    };
+    const props = {
+      settings: {
+        "map.latitude_column": "lat",
+        "map.longitude_column": "lng",
+        "map.metric_column": "metric",
+        "map.type": "pin",
+      },
+      series: [{ data }],
+      onUpdateWarnings,
+    };
+    const { points } = new PinMap(props)._getPoints(props);
+
+    expect(points).toEqual([
+      [0, 0, null],
+      [1, 2, null],
+      [0, 0, 0],
+    ]);
+    expect(onUpdateWarnings.mock.calls[0][0]).toEqual([
+      "We filtered out 2 row(s) containing null values.",
+    ]);
+  });
 });