百度android地图例子里的LocationOverlay,怎么改变圈的大小

penguin1047 2012-03-19 04:40:37
那个例子有个蓝色的圆圈,不知怎么改变大小,比如改成200米的半径

package com.baidu.mapapi.demo;

import java.util.ArrayList;
import java.util.List;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Point;
import android.graphics.drawable.Drawable;
import android.location.Location;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.Toast;

import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.GeoPoint;
import com.baidu.mapapi.ItemizedOverlay;
import com.baidu.mapapi.LocationListener;
import com.baidu.mapapi.MapActivity;
import com.baidu.mapapi.MapView;
import com.baidu.mapapi.MyLocationOverlay;
import com.baidu.mapapi.OverlayItem;
import com.baidu.mapapi.Projection;

public class LocationOverlay extends MapActivity {
static View mPopView = null; // 点击mark时弹出的气泡View
MapView mMapView = null;
LocationListener mLocationListener = null;//onResume时注册此listener,onPause时需要Remove
MyLocationOverlay mLocationOverlay = null; //定位图层

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.mapviewdemo);

BMapApiDemoApp app = (BMapApiDemoApp)this.getApplication();
if (app.mBMapMan == null) {
app.mBMapMan = new BMapManager(getApplication());
app.mBMapMan.init(app.mStrKey, new BMapApiDemoApp.MyGeneralListener());
}
app.mBMapMan.start();
// 如果使用地图SDK,请初始化地图Activity
super.initMapActivity(app.mBMapMan);

mMapView = (MapView)findViewById(R.id.bmapView);
mMapView.setBuiltInZoomControls(true);
//设置在缩放动画过程中也显示overlay,默认为不绘制
mMapView.setDrawOverlayWhenZooming(true);

// 添加定位图层
mLocationOverlay = new MyLocationOverlay(this, mMapView);
mMapView.getOverlays().add(mLocationOverlay);

// 注册定位事件
mLocationListener = new LocationListener(){


public void onLocationChanged(Location location) {
if (location != null){
GeoPoint pt = new GeoPoint((int)(location.getLatitude()*1e6),
(int)(location.getLongitude()*1e6));
mMapView.getController().animateTo(pt);
}
}
};
}


protected void onPause() {
BMapApiDemoApp app = (BMapApiDemoApp)this.getApplication();
app.mBMapMan.getLocationManager().removeUpdates(mLocationListener);
mLocationOverlay.disableMyLocation();
mLocationOverlay.disableCompass(); // 关闭指南针
app.mBMapMan.stop();
super.onPause();
}
@Override
protected void onResume() {
BMapApiDemoApp app = (BMapApiDemoApp)this.getApplication();
// 注册定位事件,定位后将地图移动到定位点
app.mBMapMan.getLocationManager().requestLocationUpdates(mLocationListener);
mLocationOverlay.enableMyLocation();
mLocationOverlay.enableCompass(); // 打开指南针
app.mBMapMan.start();
super.onResume();
}

@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}

}
...全文
847 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
tangfei_honesty 2012-03-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 penguin1047 的回复:]

如果我要在当前手机所在位置画个半径200米的圆圈怎么画?能否提供代码?
[/Quote]
百度的例子好像写死了
画圆
public void draw(Canvas canvas, MapView mapView, boolean shadow) {
super.draw(canvas, mapView, shadow);
Paint paint = new Paint();
paint.setColor(Color.BLUE);
paint.setDither(true);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeCap(Paint.Cap.ROUND);
paint.setStrokeJoin(Paint.Join.ROUND);
paint.setStrokeWidth(5);
Projection projection = mapView.getProjection();
Point p1 = new Point();
projection.toPixels(getPoint, p1);
canvas.drawCircle(p1.x, p1.y, projection.metersToEquatorPixels(Radius), paint);
}
penguin1047 2012-03-20
  • 打赏
  • 举报
回复
如果我要在当前手机所在位置画个半径200米的圆圈怎么画?能否提供代码?
梦_枫 2012-03-19
  • 打赏
  • 举报
回复
那个好像没法改,,它的大小和你当前地图缩放大小成比例的
j_f0001 2012-03-19
  • 打赏
  • 举报
回复
那个是坐标的精度,需要动态调整的。
如果真要动态调整的话,是在图层的draw里面画的

80,493

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧