在OpenLayers中获取2个LonLat对象之间的距离(以像素为单位)
Get distance in pixels between 2 LonLat objects in OpenLayers
我有两个OpenLayers.LonLat对象,我想确定两个对象之间当前缩放的像素距离。我使用OpenLayers.Layer.getViewPortPxFromLonLat((来确定点的x和y,然后进行减法以查看2之间的差异,但对于相距2000公里的点,我得到的值非常小。
这是我的代码:
var center_lonlat = new OpenLayers.LonLat(geometry.lon, geometry.lat);
var center_px = layer.getViewPortPxFromLonLat(center_lonlat);
var radius_m = parseFloat(feature.attributes["radius"]);
var radius_lonlat = OpenLayers.Util.destinationVincenty(center_lonlat, 0, radius_m);
var radius_px = layer.getViewPortPxFromLonLat(radius_lonlat);
var radius = radius_px.y - center_px.y;
我试着在这里画一个圆,给出一个圆心和一个以米为单位的半径。LonLat对象似乎正常。
我做错什么了吗?
我发现了问题:destinationVincenty((需要并返回wgs84中的坐标,我的地图使用球形mercator投影。
我希望我得到了正确的答案,因为投影让我头晕,从来没有真正理解过它们:(.我在控制台中查看我的坐标数字和地图上的坐标。用于计算getViewPortPxFromLonLat((的getExtent((,我意识到它们的数量级不对,然后它击中了我。
所以,现在的代码是:
var spherical_mercator = new OpenLayers.Projection("EPSG:900913");
var wgs84 = new OpenLayers.Projection("EPSG:4326");
var map = feature.layer.map;
var geometry = feature.geometry;
var center_lonlat = new OpenLayers.LonLat(geometry.y, geometry.x);
var center_px = map.getViewPortPxFromLonLat(center_lonlat);
var radius_m = parseFloat(feature.attributes["radius"]);
var radius_lonlat = OpenLayers.Util.destinationVincenty(center_lonlat.clone().transform(spherical_mercator, wgs84), 0, radius_m).transform(wgs84, spherical_mercator);
var radius_px = map.getViewPortPxFromLonLat(radius_lonlat);
var radius = Math.abs(radius_px.y - center_px.y);
用OpenLayers.Control.ScaleLine测量圆,大小为:D
你似乎做得不错。如果你得到的距离太小,也许OpenLayers.Util.destinationVincenty
函数有问题?你试过用其他东西代替轴承(0(吗?在你的情况下,它的价值似乎并不重要。但坦率地说,在浏览源
相关文章:
- 如何通过溢出来判断元素被切断了多少像素:隐藏在父级上
- 点击facebook像素跟踪注册(JS/JQUERY代码)
- 点击(右键点击)使用传单地图库获取图像覆盖的像素坐标
- 如何使线条的边缘像素保持半透明
- 画布:逐像素绘制图像并请求动画帧计时
- 如何's css标记"-webkit最小设备像素比”;在Javascript中实现
- javascript mootools平滑滚动'x'像素数量
- 逐像素碰撞检测弹球
- 获取图像的平均外部像素颜色
- 如何根据分辨率添加像素
- 仅当窗口宽度>940像素,无论是通过页面加载还是调整大小
- 使用画布在秒内逐像素显示图片
- JS/CSS:如何在向下滚动超过1200像素(高度)后更改z索引值
- 获取以屏幕像素为单位的旋转SVG元素的边界
- 如何将像素添加到元素的当前位置
- 远距离变换元素的宽度/高度(以像素为单位)
- 如何使用JavaScript/JQuery以像素为单位打印鼠标拖动距离
- 检查元素是否距离可见x像素
- 像素距离在谷歌地图(API V3),以避免重叠的标签/覆盖
- 在OpenLayers中获取2个LonLat对象之间的距离(以像素为单位)