计算屏幕外地图位置的半径

时间:2012-03-02 01:00:04

标签: android google-maps math

问题:

如何考虑屏幕的矩形形状以确保圆圈精确地绘制到填充边界?

以下适用于“圆形”区域,但不适用于矩形区域......

dx = abs(center.x - place.x);
dy = abs(center.y - place.y);
dh = Math.sqrt((dx * dx) + (dy * dy));
radius = dh - padding;

Halo Design: Halo idea

如果问题看起来不明显,下面的图像代表了我正在使用的当前方法。取决于地点的位置影响它伸入屏幕空间的距离。 enter image description here

2 个答案:

答案 0 :(得分:5)

认为这应该有效。没有测试过。

dx = abs(placeLocationPixels.x - ourLocationPixels.x)
dy = abs(placeLocationPixels.y - ourLocationPixels.y)

ox = dx - ((screenSize.x / 2) - padding);
oy = dy - ((screenSize.y / 2) - padding);

if (ox < 0) ox = 0;
if (oy < 0) oy = 0;

radius = sqrt((ox*ox) + (oy*oy));

编辑:这不是任何特定的语言。

答案 1 :(得分:0)

我不确定但也许您可以计算凸包,然后将其限定为矩形,然后您将获得地图的比例以确保每个圆都显示在屏幕上。

此处:您可以找到有关凸包的信息:http://en.wikipedia.org/wiki/Convex_hull