Javascript 在OpenLayers 3中设置视图范围

Javascript 在OpenLayers 3中设置视图范围,javascript,geojson,openlayers-3,Javascript,Geojson,Openlayers 3,我刚刚开始研究OpenLayers 3,并尝试缩放到一个单一功能,其范围是服务器发送的geoJSON对象,该对象在每次刷新时都会更改,因此我无法硬编码缩放/中心点。我希望这种情况最好在页面加载后尽快发生,但我正在努力让它正常工作 我一直收到一个错误,说uncaughttypeerror:undefined不是我试图从geoJSON对象读取几何体的行中的函数,我不确定如何修复它。geoJSON字符串似乎很好,在将其传递给readGeometry之前,我也尝试过对其进行解析,但结果相同 如果有比我现

我刚刚开始研究OpenLayers 3,并尝试缩放到一个单一功能,其范围是服务器发送的geoJSON对象,该对象在每次刷新时都会更改,因此我无法硬编码缩放/中心点。我希望这种情况最好在页面加载后尽快发生,但我正在努力让它正常工作

我一直收到一个错误,说uncaughttypeerror: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',
  });    

读取几何图形的工作方式应如下所示:

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());

你能发布一个GeoJSON的例子吗?您可能必须使用readFeature而不是readGeometry,但这取决于您的web服务返回的内容。{st_asgeojson:{\type\:\Polygon\,\coordinates\:[[[-2416.913124359336700304.87650272],-2416.913124359336700339.02584392],-2255.978536519616700339.02584392],-2255.978536519616700304.87650272],-2416.91312436700304.87650272]}}GeoJSON位似乎工作不正常,因为当我将其登录到控制台时,对象似乎是空的,非常感谢!我不知道那是一本字典。最后将其排序:var geojson=new ol.format.geojson;var json=json.parseclient.responseText;var geom=geojson.readGeometryjson['st_asgeojson'];var feature=newol.feature{};feature.setGeometrygeom;console.logfeature.getGeometry;extent.getSource.addFeaturefeature;