我刚刚开始看看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',
});
答案 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());