比如打开地图后,用户点击一点,然后就在那个点显示出一个图片或者绘制一个圆圈之类的,我用OnTap捕捉了坐标,但是绘制不了。
我顺便问一下:android的canvas一定要在OnDraw(Canvas canvas)这种类似的情况下使用吗,我能使用一个OnTouch(xxx),然后在这个函数里面用canvas吗?
我顺便问一下:android的canvas一定要在OnDraw(Canvas canvas)这种类似的情况下使用吗,我能使用一个OnTouch(xxx),然后在这个函数里面用canvas吗?
LocationManager lm;
MapView mv;
Location l;
int lat,lon;
Geocoder coder;
GeoPoint point;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mv = (MapView) findViewById(R.id.mapview);
mv.setBuiltInZoomControls(true);
try {
point = getLocation("深圳地王大厦");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
List<Overlay> mapViewList = mv.getOverlays();
Drawable d = getResources().getDrawable(R.drawable.a);
d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
MyOverlayItem myItem = new MyOverlayItem(d);
OverlayItem item = new OverlayItem(point, "", "");
item.setMarker(d);
myItem.additem(item);
mapViewList.add(myItem);
mv.getController().setZoom(16);
mv.getController().animateTo(point);
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
private GeoPoint getLocation(String str) throws IOException
{
int lat,lon;
coder = new Geocoder(this, Locale.getDefault());
List<Address> list = coder.getFromLocationName(str, 1);
if((list!=null)&&(list.size()>0))
{
Address a = list.get(0);
lat = (int)(a.getLatitude()*1e6);
lon = (int)(a.getLongitude()*1e6);
}
else
{
lat = (int)(22.55*1e6);
lon = (int)(114.1*1e6);
}
return new GeoPoint(lat, lon);
}
class MyOverlayItem extends ItemizedOverlay<OverlayItem>
{
private List<OverlayItem> list = new ArrayList<OverlayItem>();
public MyOverlayItem(Drawable defaultMarker) {
super(defaultMarker);
// TODO Auto-generated constructor stub
}
public void additem(OverlayItem item)
{
list.add(item);
populate();
}
@Override
protected OverlayItem createItem(int i) {
// TODO Auto-generated method stub
return list.get(i);
} @Override
public int size() {
// TODO Auto-generated method stub
return list.size();
}
}
}