gpt4 book ai didi

android - 在我的位置周围画圈

转载 作者:搜寻专家 更新时间:2023-11-01 08:10:12 24 4
gpt4 key购买 nike

我正在尝试围绕我的位置画一个圆圈。我不确定我做错了什么,但圆圈没有显示:

@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow) {
Projection projection = mapView.getProjection();

if (shadow == false && location != null) {
// Get the current location
Double latitude = location.getLatitude() * 1E6;
Double longitude = location.getLongitude() * 1E6;
GeoPoint geoPoint = new GeoPoint(latitude.intValue(),
longitude.intValue());

int radius = metersToRadius(100, mapView, latitude);

// Convert the location to screen pixels
Point point = new Point();
projection.toPixels(geoPoint, point);

// Setup the paint
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setStrokeWidth(2.0f);

paint.setColor(0xff6666ff);
paint.setStyle(Style.STROKE);
canvas.drawCircle(point.x, point.y, radius, paint);

paint.setColor(0x186666ff);
paint.setStyle(Style.FILL);
canvas.drawCircle(point.x, point.y, radius, paint);
}
super.draw(canvas, mapView, shadow);
}

编辑:为了清楚起见,我将发布我的类(class):CustomItemizedOverlay

public class CustomItemizedOverlay extends ItemizedOverlay<OverlayItem> {

protected final List<OverlayItem> mOverlays = new ArrayList<OverlayItem>();

protected final Context mContext;

public CustomItemizedOverlay(Drawable defaultMarker, Context context) {
super(boundCenterBottom(defaultMarker));
this.mContext = context;
}

public void addOverlay(OverlayItem overlay) {
mOverlays.add(overlay);
populate();
}

@Override
protected OverlayItem createItem(int i) {
// TODO Auto-generated method stub
return mOverlays.get(i);
}

public void removeOverlay(OverlayItem overlay) {
mOverlays.remove(overlay);
populate();
}

public void clear() {
mOverlays.clear();
populate();
}

@Override
public int size() {
// TODO Auto-generated method stub
return mOverlays.size();
}

@Override
protected boolean onTap(int i) {
OverlayItem itemClicked = this.mOverlays.get(i);

AlertDialog.Builder builder = new AlertDialog.Builder(this.mContext);

builder.setTitle(itemClicked.getTitle());
builder.setMessage(itemClicked.getSnippet());
builder.setCancelable(true);

AlertDialog alert = builder.create();
alert.show();

return true;
}

和PcCustomizedOverlay

public class PcCustomItemizedOverlay extends CustomItemizedOverlay {

public static int metersToRadius(float meters, MapView map, double latitude) {
return (int) (map.getProjection().metersToEquatorPixels(meters) * (1 / Math
.cos(Math.toRadians(latitude))));
}

private Location location;

public PcCustomItemizedOverlay(Drawable defaultMarker, Context context) {
super(defaultMarker, context);
}

@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow) {
Projection projection = mapView.getProjection();

if (shadow == false && location != null) {
// Get the current location
Double latitude = location.getLatitude() * 1E6;
Double longitude = location.getLongitude() * 1E6;
GeoPoint geoPoint = new GeoPoint(latitude.intValue(),
longitude.intValue());

int radius = metersToRadius(40, mapView, latitude);

// Convert the location to screen pixels
Point point = new Point();
projection.toPixels(geoPoint, point);

// Setup the paint
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setStrokeWidth(2.0f);

paint.setColor(0xff6666ff);
paint.setStyle(Style.STROKE);
canvas.drawCircle(point.x, point.y, radius, paint);

paint.setColor(0x186666ff);
paint.setStyle(Style.FILL);
canvas.drawCircle(point.x, point.y, radius, paint);
}
super.draw(canvas, mapView, shadow);
}

public Location getLocation() {
return location;
}

public void setLocation(Location location) {
this.location = location;
}

谁知道问题出在哪里?

非常感谢

最佳答案

试试这段代码

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mapView = (MapView) findViewById(R.id.mapview);
MapController mc = mapView.getController();
MyLocationOverlay myLocationOverlay = new MyLocationOverlay(MainMap.this, mapView);
mapView.getOverlays().add(myLocationOverlay);
mc.animateTo( new GeoPoint(lat, lng));
mc.setZoom(15);
mapView.invalidate();
}

不要忘记添加 overlay.enableMyLocation();在 onresume() 和 overlay.disableMyLocation() 中;在暂停

如果你想围绕你的点画圆,你可以使用下面的示例代码代替上面的代码:

Point screenPnts =new Point();
GeoPoint curr_geopoint = new GeoPoint((int)(location.getLatitude()*1E6),(int)(location.getLongitude()*1E6));
mapview.getProjection().toPixels(curr_geopoint, screenPnts);
canvas.drawCircle(screenPnts.x, screenPnts.y, 15, paint);

通过操纵 screenPnts.x 和 screenPnts.y 的值,做一些试验和错误来获得围绕该点的圆圈。这里的 paint 是 Paint 类的对象,用来给圆圈上色

关于android - 在我的位置周围画圈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10551204/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com