功能没有显示在地图上
问题描述:
我一直在尝试新版本(3)的Open Layers。我稍微修改了图标特征示例,因此它会显示一个多边形。我一直在寻找,阅读并尝试了几个小时,但无法弄清楚我做错了什么。功能没有显示在地图上
我不想使用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>
为什么多边形没有显示?为您解决问题
答
两件小事:
首先,它建议关闭多边形,所以用相同的坐标作为第一个声明的第四点。
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]])
这里重要的事实并非point4此外但你的阵列点转变为点的数组的数组。见the API,说OpenLayers 3 ol.geom.Polygon
构造函数预计Array.<Array.<ol.Coordinate>>
预期。