在OpenLayers 3中设置视图范围

时间:2014-07-27 01:40:57

标签: javascript geojson openlayers-3

我刚刚开始看看OpenLayers 3并尝试缩放到一个功能,其范围是服务器发送的geoJSON对象(每次刷新时都会更改,所以我可以&#39 ; t硬编码缩放/中心点)。我希望这一切最好只在页面加载时发生,但我正在努力让它发挥作用。

我一直收到错误说" Uncaught TypeError:undefined不是函数"在我试图从geoJSON对象读取几何的行,我不确定如何解决它。 geoJSON字符串似乎很好(我还尝试在将其传递给readGeometry之前对其进行解析,但结果相同)。

如果有一种比我目前更容易/更快捷的方式,我也有兴趣听到它! 非常感谢任何帮助。

var feature = new ol.Feature({
});

var view = new ol.View({
  center: [0, 0],
  zoom: 1
});


var client = new XMLHttpRequest();
client.open('GET', 'http://localhost:3000/extent');
client.send();
client.onreadystatechange=function(){
    if (client.readyState==4 && client.status==200){
        var geomstring = client.responseText;
        console.log(geomstring)
        var geojson = new ol.format.GeoJSON();
        var geom = geojson.readGeometry(geomstring);
        var size = (map.getSize());
        feature.setGeometry(geom);
        view.fitGeometry(
        geom,
        size,
        {
            padding: [170, 50, 30, 150],
            constrainResolution: false
        });
    }
}

var map = new ol.Map({
  layers: [raster, vector, feature],
  target: 'map',
  });    

1 个答案:

答案 0 :(得分:0)

读取几何应该是这样的:

var geojson = new ol.format.GeoJSON();    
var json = {"st_asgeojson":"{\"type\":\"Polygon\",\"coordinates\":[[[-2416.91312435933,6700304.87650272],[-2416.91312435933,6700339.02584392],[-2255.97853651961,6700339.02584392],[-2255.97853651961,6700304.87650272],[-2416.91312435933,6700304.87650272]]]}"};
var geom = geojson.readGeometry(json['st_asgeojson']);
console.log(geom.getArea());