openlayers 3多字形查询

时间:2016-01-18 19:12:55

标签: javascript openlayers-3

我有这个多边形

MULTIPOLYGON(((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链接,你可以看到多边形,如何阻止多边形越过地图的顶点?

http://jsfiddle.net/7vhd23nd/

1 个答案:

答案 0 :(得分:2)

问题不在于您的代码,而在于投影。

您正在使用球形墨卡托投影,但您的某些点超出了投影的范围。 (你可以在这里找到投影界限http://epsg.io/3857

这就是那些拉伸多边形的原因。

您可以剪切几何图形(如果可能),或者您可以使用其他投影,否则您需要球形表示(如Google地球)