0

lat:41.01522やlon:28.95221のようなポイントがあるとしましょう。X latxとlonxを計算して、これらの点が指定された半径でこの点の周りに円(均等に分散)を作成するようにする必要があります。

どのようにアイデア?

4

2 に答える 2

1

これが私がやっている方法です:

@Override
public void draw(Canvas canvas, MapView mapview, boolean shadow) {
    super.draw(canvas, mapview, shadow);

        if(location != null){
            //---translate the GeoPoint with center to screen pixels---
            screenPts = new Point();
            mapview.getProjection().toPixels(new GeoPoint((int)(location.getLatitude()*1E6),(int)(location.getLongitude()*1E6)) , screenPts);


            //Draw accuracy marker
            GeoPoint g0 = mapview.getProjection().fromPixels(0, screenPts.y);
            GeoPoint g1 = mapview.getProjection().fromPixels(width, screenPts.y);
            l0.setLatitude(g0.getLatitudeE6()/1E6);
            l0.setLongitude(g0.getLongitudeE6()/1E6);
            l1.setLatitude(g1.getLatitudeE6()/1E6);
            l1.setLongitude(g1.getLongitudeE6()/1E6);
            float d01=l0.distanceTo(l1);
            int size=(int)(location.getAccuracy() * width / d01);
            canvas.drawCircle(screenPts.x, screenPts.y, size, paintAccuracyFill);
            canvas.drawCircle(screenPts.x, screenPts.y, size, paintAccuracyStroke);
        }
}

がんばれ、ルイス

于 2012-07-19T02:41:26.720 に答える
0

さて、数時間後、私は十分に閉鎖されたと思います:

            double lat3, lon3;
            int n = 15;
            double radius = 0.0006;
            for (double i = 0; i < 360; i += 360 / n) {

                double cos1 = radius * Math.cos(Math.toRadians(i));
                double sin1 = radius * Math.sin(Math.toRadians(i));
                lat3 = lat + (sin1);
                lon3 = lon + (cos1);
                Log.i("change", String.valueOf(i) + ":" + String.valueOf(cos1)
                        + "," + String.valueOf(sin1));
                items.add(new OverlayItem(getPoint(lat3, lon3), String
                        .valueOf(i), "snippet"));
            } 

中心にあるオブジェクトの周りにオーバーレイを挿入したい場合、これがあなたのやり方だと思います...

于 2012-07-17T12:22:38.993 に答える