lat:41.01522やlon:28.95221のようなポイントがあるとしましょう。X latxとlonxを計算して、これらの点が指定された半径でこの点の周りに円(均等に分散)を作成するようにする必要があります。
どのようにアイデア?
lat:41.01522やlon:28.95221のようなポイントがあるとしましょう。X latxとlonxを計算して、これらの点が指定された半径でこの点の周りに円(均等に分散)を作成するようにする必要があります。
どのようにアイデア?
これが私がやっている方法です:
@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);
}
}
がんばれ、ルイス
さて、数時間後、私は十分に閉鎖されたと思います:
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"));
}
中心にあるオブジェクトの周りにオーバーレイを挿入したい場合、これがあなたのやり方だと思います...