因此,这里是这样的:我想在我的地图上绘制一个圆圈,然后将其保存到JSON文件中。据我所知,你不能写圆形几何到JSON(https://github.com/openlayers/ol3/issues/3552)。我使用OL3示例绘制形状并将其更改为使用ol.geom.Polygon.circular方法来避免使用圆几何。当我尝试保存它时,我得到“TypeError:循环对象值”。无法在Openlayers中将绘制的Circle的特征保存为JSON 3
if (value) {
var geometryFunction, maxPoints;
if (value === 'Circle') {
value='Circle';
maxPoints=2;
geometryFunction = function (coordinates, geometry) {
if (!geometry) {
geometry = new ol.geom.Polygon(null);
}
var center = coordinates[0];
var last = coordinates[1];
var dx = center[0] - last[0];
var dy = center[1] - last[1];
var radius = Math.sqrt(dx * dx + dy * dy);
geometry = ol.geom.Polygon.circular(wgs84Sphere, center, radius);
return geometry;
};
draw = new ol.interaction.Draw({
features:features,
type: value,
geometryFunction: geometryFunction,
maxPoints: maxPoints
});
map.addInteraction(draw);
这就是我如何保存JSON:
var writer = new ol.format.GeoJSON();
var geojsonStr = writer.writeFeatures(source.getFeatures());
alert(geojsonStr);
我敢肯定,必须有绘制和保存使用ol.geom.Polygon.fromCircle或ol.geom圈以JSON的方式。 Polygon.circular。有任何想法吗?
你在你的功能,例如储存任何复杂的属性(即不是字符串或数字等)使用'feature.set()'?如果没有看到您的应用程序,很难猜测发生了什么。 – ahocevar
这就是我所拥有的:http://jsfiddle.net/px6ks0am/ 因为JSON不能获得圆形几何体,所写的特征是空的。我怎样才能避免使用圆或将其转换为多边形? – thebat93