0

私のクエリは、UIMAPVIEW にポイントをプロットするために必要な最小距離であり、それらを個別のポイントとして表示できるようにします。たとえば、同じアパートに複数のユーザーがいるとします。緯度と経度の距離はほとんどありません。では、どうすればそれらを区別できますか !

4

1 に答える 1

1

通常は 2 つの方法があります。1 つはクラスタリングです。これは、基礎となるマーカーの数を示す番号を持つマーカーを使用することを意味します。それをタップすると、ユーザーには個別のマーカーが表示されます (または、マーカーをどんどん分割する再帰的なズームイン)。Superpin (www.getsuperpin.com) はその一例ですが、他にもあります。

もう 1 つの方法は、マーカーを実際の位置から実際にオフセットすることです。このためには、それを十分にオフセットするある種の分散アルゴリズムが必要です。つまり、マーカーを見たり触れたりするのに十分な表面積を与えながら、マーカーをできるだけ近づけて設定します。このために、フィボナッチのひまわりパターンを使用します。あなたがしなければならないことは、同じ座標を持つすべての注釈を識別し、それらをグループ化し、次に各グループを互いにオフセットしながら順番に描画することです-例. らせん形状に沿って反復し、そのらせんに沿ってマーカーをドロップするコードがあります。

2 番目の方法を使用する場合は、サンプル コードなどを提供してください。

編集: このために書いたコードをいくつか見つけましたが、それは客観的な C ではありません。読めますか?

class SunFlower
{
    static $SEED_RADIUS = 2;
    static $SCALE_FACTOR = 4;
    static $PI2 = 6.28318531; // PI * 2
    static $PHI = 1.61803399; // (sqrt(5)+1) / 2

    public static function calcPos($xc, $yc, $factor, $i)
    {
        $theta = $i * SunFlower::$PI2 / SunFlower::$PHI;
        $r = sqrt($i) * $factor;
        $x = $xc + $r * cos($theta);
        $y = $yc - $r * sin($theta);

        if ($i == 1) {
            $y += ($factor * 0.5);
        }

        return array($x, $y);
    }
}
于 2013-09-15T06:20:54.463 に答える