openlayers 3 多面查询
openlayers 3 multipolygon query
我有这个多边形
多边形 (((179.9999 89.9999, 179.9999 67, 150 69, 90 8, 70 -60, -20 -60, -40 36, -25 66, -14 72, 0 89.9999, 179.9999 89.9999)), ((-170 89.9999, -170 66, -179.9999 67, -179.9999 89.9999, -170 89.9999)))
它一直向北延伸超过地图的边界,我对此很陌生,我终究无法弄清楚为什么它会超过地图的顶部
我正在使用标准的 openlayers 地图,我从我的数据库中获取多边形,然后我使用 javascript
读取它们
var items = JSON.parse(resulta);
for(i = 0; i < items.length; i++)
{
var format = new ol.format.WKT();
if (items[i].WKT.length > 0) {
for (y = 0; y < items[i].WKT.length; y++) {
var feature = format.readFeature(items[i].WKT[y], {
dataProjection: 'EPSG:4326',
featureProjection: 'EPSG:3857'
});
if (items[i].type === 1) {
vectorSourcetype1.addFeature(feature);
}
else if (items[i].type === 2) {
vectorSourcetype2.addFeature(feature);
}
else if (items[i].type === 3) {
vectorSourcetype3.addFeature(feature);
}
}
}
}
我有一个 jsfiddle link 在这里你可以看到多边形,我如何阻止多边形越过地图的顶部?
问题不在于您的代码,而在于投影。
您使用的是球形墨卡托投影,但您的某些点位于投影范围之外。
(你可以在这里找到投影范围http://epsg.io/3857)
这就是那些拉伸多边形的原因。
你可以切割你的几何图形(如果可能的话),或者你可以使用另一个投影,否则你需要一个球形表示(比如 google 地球)
我有这个多边形
多边形 (((179.9999 89.9999, 179.9999 67, 150 69, 90 8, 70 -60, -20 -60, -40 36, -25 66, -14 72, 0 89.9999, 179.9999 89.9999)), ((-170 89.9999, -170 66, -179.9999 67, -179.9999 89.9999, -170 89.9999)))
它一直向北延伸超过地图的边界,我对此很陌生,我终究无法弄清楚为什么它会超过地图的顶部
我正在使用标准的 openlayers 地图,我从我的数据库中获取多边形,然后我使用 javascript
读取它们var items = JSON.parse(resulta);
for(i = 0; i < items.length; i++)
{
var format = new ol.format.WKT();
if (items[i].WKT.length > 0) {
for (y = 0; y < items[i].WKT.length; y++) {
var feature = format.readFeature(items[i].WKT[y], {
dataProjection: 'EPSG:4326',
featureProjection: 'EPSG:3857'
});
if (items[i].type === 1) {
vectorSourcetype1.addFeature(feature);
}
else if (items[i].type === 2) {
vectorSourcetype2.addFeature(feature);
}
else if (items[i].type === 3) {
vectorSourcetype3.addFeature(feature);
}
}
}
}
我有一个 jsfiddle link 在这里你可以看到多边形,我如何阻止多边形越过地图的顶部?
问题不在于您的代码,而在于投影。
您使用的是球形墨卡托投影,但您的某些点位于投影范围之外。 (你可以在这里找到投影范围http://epsg.io/3857)
这就是那些拉伸多边形的原因。
你可以切割你的几何图形(如果可能的话),或者你可以使用另一个投影,否则你需要一个球形表示(比如 google 地球)