package com.android.yibai.antking;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Point;
import android.location.Address;
import android.location.Geocoder;
import android.os.Bundle;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.Projection;
public class GeocoderMain extends MapActivity{
//地图显示控制相关的变量定义
private MapView map = null;
private MapController mapCon;
private Geocoder geo;
private static final int ERROR_DIALOG=1;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
geo
= new Geocoder
(this,
Locale.
CHINA);
//获取MapView
map = (MapView)this.findViewById(R.id.mapview);
//设置显示模式
// map.setTraffic(false);
// map.setSatellite(true);
//map.setStreetView(true);
//设置可以缩放
map.setBuiltInZoomControls(true);
try{
addresses = geo.getFromLocationName("日照市万平口", 1);
e.printStackTrace();
}
if(addresses.size()==0){
showDialog(ERROR_DIALOG);
GeoPoint geoBeijing = new GeoPoint(
39906033,116397700);
mapCon = map.getController();
mapCon.setCenter(geoBeijing);
mapCon.setZoom(4);
}else{
Address address = (Address) addresses.get(0);
//设置初始地图的中心位置
GeoPoint geoPoint =new GeoPoint(
(int)(address.getLatitude()*1E6),
(int)(address.getLongitude()*1E6)
);
mapCon = map.getController();
mapCon.setCenter(geoPoint);
mapCon.setZoom(20);
List<Overlay> overlays = this.map.getOverlays();
PositionOverlay overlay = new PositionOverlay(geoPoint,this,R.drawable.icon);
overlays.add(overlay);
}
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
protected Dialog onCreateDialog
(int id
){
return new AlertDialog.Builder(this).setTitle("查询出错了")
.setMessage("地名出错,请从新输入").create();
}
class PositionOverlay extends Overlay{
private GeoPoint geoPoint;
private int drawable;
public PositionOverlay
(GeoPoint geoPoint,
Context context,
int drawable
){
super();
this.geoPoint = geoPoint;
this.context = context;
this.drawable = drawable;
}
public void draw
(Canvas canvas,MapView mapView,
boolean shadow
){
Projection projection = mapView.getProjection();
projection.toPixels(geoPoint, point);
Bitmap bitmap =BitmapFactory.decodeResource(context.getResources(), drawable);
canvas.
drawBitmap(bitmap,
(point.
x-bitmap.
getWidth()/2),
(point.
y-bitmap.
getHeight()),
new Paint());
super.draw(canvas, mapView, shadow);
}
}
}
//java/1310