我需要计算在缩放事件之后地图上两点之间的像素距离。我的问题是,当地图缩放时,投影会产生不一致的结果。
计算很简单:
Projection p = mapView.getProjection();
Point p1 = new Point();
Point p2 = new Point();
GeoPoint g1 = //value1
GeoPoint g2 = //value2
p.toPixels(g1, p1);
p.toPixels(g2, p2);
double distancePx = Math.sqrt(Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2));
我在MapView的dispatchDraw
方法中检测到了缩放。如果我做正确的计算,那么我会得到不一致和奇怪的结果。如果我等待半秒钟并尝试计算,我会得到完美的结果。虽然这有点晚了,因为在我完成缩放之前我真的需要知道答案。理想情况下,我只能根据zoomLevel计算出像素的距离。有什么想法吗?