diff --git a/src/ol-ext/format.js b/src/ol-ext/format.js
index <HASH>..<HASH> 100644
--- a/src/ol-ext/format.js
+++ b/src/ol-ext/format.js
@@ -1,7 +1,9 @@
 import BaseGeoJSON from 'ol/format/geojson'
 import TopoJSON from 'ol/format/topojson'
 import { isEmpty } from '../util/minilo'
+import { EPSG_4326 } from './consts'
 import { createCircularPolygon } from './geom'
+import { transformPoint } from './proj'
 import { isCircle } from './util'
 
 /**
@@ -23,7 +25,15 @@ export function createTopoJsonFmt (options) {
 class GeoJSON extends BaseGeoJSON {
   writeGeometryObject (geometry, options) {
     if (isCircle(geometry)) {
-      geometry = createCircularPolygon(geometry.getCenter(), geometry.getRadius())
+      geometry = createCircularPolygon(
+        transformPoint(
+          geometry.getCenter(),
+          options.featureProjection || this.defaultFeatureProjection,
+          EPSG_4326,
+        ),
+        geometry.getRadius(),
+      )
+      options.featureProjection = EPSG_4326
     }
     return super.writeGeometryObject(geometry, options)
   }
custom geojson fmt: replace projection after circle to polygon conversion