简体   繁体   English

OpenLayers 3缩放到边界框

[英]OpenLayers 3 zoom to boundary box

I tried to zoom to all points on map. 我试图放大地图上的所有点。 I have array of GPS (lon,lat) coords, makes extent and I tried to zoom. 我有一组GPS(纬度,经度)坐标,使范围变大,我尝试进行缩放。 But map is zoomed outside of extent. 但是地图在范围之外缩放。 How can I do that? 我怎样才能做到这一点? I tried this code: 我尝试了这段代码:

var devices = document.querySelectorAll(".device_icon");
var coords = [];

for (var i = 0; i < devices.length; i++) {
    var lon = devices[i].getAttribute("data-lon");
    var lat = devices[i].getAttribute("data-lat");

    coords.push([lon, lat]);
}
var ex = ol.extent.boundingExtent(coords);
var areaExtent = ol.extent.applyTransform(ex, ol.proj.getTransform('EPSG:4326', 'EPSG:3857'));

map.getView().fitExtent(areaExtent, map.getSize());

Thanks. 谢谢。

I got a similar code in my project, but i'm using this function to transform the extent: 我的项目中有类似的代码,但是我正在使用此函数来转换范围:

var areaextent = ol.proj.transformExtent(ex, 'EPSG:4326', 'EPSG:900913');

I dont know if the function or the target-projection makes the difference. 我不知道功能或目标投影是否有所作为。 Just try ;) 你试一试 ;)

Ok, I found solution. 好的,我找到了解决方案。 The problem is in type of lon, lat. 问题出在lon,lat的类型上。 I had to change this line 我不得不改变这条线

coords.push([lon, lat]);

to line 到线

coords.push([parseFloat(lon), parseFloat(lat)]);

Now it's working perfectly. 现在,它运行良好。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM