我一直在尝试Open Layers的新版本(3)。我稍微修改了图标特征示例,因此它会显示一个多边形。我一直在寻找,阅读和尝试几个小时,但无法弄清楚我做错了什么。
我不想使用geoJSON,因为我想动态添加和删除功能。
这是我到目前为止的代码:
<script type="text/javascript">
var point1 = ol.proj.transform([37.41, 8.82], 'EPSG:4326', 'EPSG:3857');
var point2 = ol.proj.transform([35.41, 9.82], 'EPSG:4326', 'EPSG:3857');
var point3 = ol.proj.transform([33.41, 11.82], 'EPSG:4326', 'EPSG:3857');
var polyFeat = new ol.Feature({
geometry: new ol.geom.Polygon([point1, point2, point3])
});
var polyStyle = new ol.style.Style({
fill: new ol.style.Fill({
color: 'blue'
}),
stroke: new ol.style.Stroke({
color: 'red',
width: 2
})
});
polyFeat.setStyle(polyStyle);
var vectorSource = new ol.source.Vector({
features: [polyFeat]
});
var vectorLayer = new ol.layer.Vector({
source: vectorSource
});
var rasterLayer = new ol.layer.Tile({
source: new ol.source.TileJSON({
url: 'http://api.tiles.mapbox.com/v3/mapbox.geography-class.jsonp'
})
});
var map = new ol.Map({
layers: [rasterLayer, vectorLayer],
target: document.getElementById('map'),
view: new ol.View({
center: ol.proj.transform([37.41, 8.82], 'EPSG:4326', 'EPSG:3857'),
zoom: 3
})
});
</script>
为什么多边形没有显示?
答案 0 :(得分:2)
解决问题的两件小事:
首先,建议关闭多边形,因此声明第四个点的坐标与第一个坐标相同。
var point4 = ol.proj.transform([37.41, 8.82], 'EPSG:4326', 'EPSG:3857');
然后,您的几何new ol.geom.Polygon([point1, point2, point3])
应为new ol.geom.Polygon([[point1, point2, point3, point4]])
这里重要的事实不是点4加法,而是将数组点转换为点数组数组。请参阅the API,其中说明OpenLayers 3 ol.geom.Polygon
构造函数需要Array.<Array.<ol.Coordinate>>
。