我有一个位置(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
);