goolge 地图地址位置解析

Java代码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);
		List addresses = null;
		try{
			addresses = geo.getFromLocationName("日照市万平口", 1);
			
			}catch(Exception e){
				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 Context context;
		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();
			Point point = new Point();
			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);
		}
	}

}
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值