Я нашел проблему: destinationVincenty () нужно и возвращает координаты в wgs84, где моя карта использовала сферическую проекцию меркатора.
Надеюсь, я получил правильный ответ, потому что проекции вызывают у меня головокружение и я их никогда не понимал:(. Я искал в консоли числа для моих координат и координат из map.getExtent (), который используется для вычисления getViewPortPxFromLonLat (), и я понял, что они не в правильном порядке величины, а затем этоУдарь меня.
Итак, код теперь:
var spherical_mercator = new OpenLayers.Projection("EPSG:900913");
var wgs84 = new OpenLayers.Projection("EPSG:4326");
var map = feature.layer.map;
var geometry = feature.geometry;
var center_lonlat = new OpenLayers.LonLat(geometry.y, geometry.x);
var center_px = map.getViewPortPxFromLonLat(center_lonlat);
var radius_m = parseFloat(feature.attributes["radius"]);
var radius_lonlat = OpenLayers.Util.destinationVincenty(center_lonlat.clone().transform(spherical_mercator, wgs84), 0, radius_m).transform(wgs84, spherical_mercator);
var radius_px = map.getViewPortPxFromLonLat(radius_lonlat);
var radius = Math.abs(radius_px.y - center_px.y);
Измерены круги с помощью OpenLayers.Control.ScaleLine, а размер мертв: D