Openylayers 2-绘制一个半径为半径的圆或一个点

时间:2020-07-23 04:30:43

标签: geometry openlayers point radius

我有一个位置(lon,lat)和半径。半径是一个浮点值,以公里(千米)为单位。

例如:纬度= 46.92,朗氏= 7.95,半径5公里。

现在我的目标是在此位置以此半径绘制一个圆或点。

我正在使用以下转换:

function GetLonLatObj(lat, lon) {

    var lonLat = new OpenLayers.LonLat( lon ,lat )
    .transform(
        new OpenLayers.Projection("EPSG:4326"), // Transformation aus dem Koordinatensystem WGS 1984
        map.getProjectionObject() // in das Koordinatensystem 'Spherical Mercator Projection'
    );

        return lonLat
}

在正确位置绘制圆是没有问题的。不幸的是,这个圆圈很小,在地图上半径为5公里。

这是我的代码:

var map = new OpenLayers.Map("mapdiv");

map.addLayer(new OpenLayers.Layer.OSM('OpenStreetMap',
    "https://a.tile.openstreetmap.org/${z}/${x}/${y}.png",
    "https://b.tile.openstreetmap.org/${z}/${x}/${y}.png",
    "https://c.tile.openstreetmap.org/${z}/${x}/${y}.png"
));

map.addLayer(vectorNotamLayer);

zoom = 12;

var vectorNotamLayer = new OpenLayers.Layer.Vector("Simple Geometry", {

    styleMap: new OpenLayers.StyleMap({
        'default': {
        pointRadius: "${Radius}",
        label : "${Title}",
        fontSize: "20px",
        fontWeight: "bold",
        labelAlign: "cm",
        labelYOffset: -10,
        fillOpacity: 0.4,
        labelOutlineWidth: 3
        }
    }),

});

    var lon = 7.95;
    var lat = 46.92; 
    var radius = 5;
    var upper = item.upper;
    var lower = item.lower;
    var number = item.number;

    var title = series + number + " " + lower + "-" + upper;

    var latLonObj = GetLonLatObj(lat, lon);

    var point = new OpenLayers.Geometry.Point(latLonObj.lon, latLonObj.lat);

    var pointFeature = new OpenLayers.Feature.Vector(point);

    pointFeature.attributes = {
        Title: title,
        Radius: radius,
    };

    vectorNotamLayer.addFeatures([pointFeature]);

请问有人可以帮我吗?

编辑:

我更改了以下代码:

    var pointFeature = new OpenLayers.Feature.Vector(point);

    pointFeature.attributes = {
        Title: title,
        Radius: radius,
    };

收件人

var poly = OpenLayers.Geometry.Polygon.createRegularPolygon
(
        point,
        radius,
        36,
        0
);

0 个答案:

没有答案
相关问题