百度地图开发第七天(经纬度和地址跳换)

代码:

package com.android.mybaidu;

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

import android.content.Context;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.GeoPoint;
import com.baidu.mapapi.ItemizedOverlay;
import com.baidu.mapapi.MKAddrInfo;
import com.baidu.mapapi.MKBusLineResult;
import com.baidu.mapapi.MKDrivingRouteResult;
import com.baidu.mapapi.MKGeneralListener;
import com.baidu.mapapi.MKPoiResult;
import com.baidu.mapapi.MKSearch;
import com.baidu.mapapi.MKSearchListener;
import com.baidu.mapapi.MKSuggestionResult;
import com.baidu.mapapi.MKTransitRouteResult;
import com.baidu.mapapi.MKWalkingRouteResult;
import com.baidu.mapapi.MapActivity;
import com.baidu.mapapi.MapController;
import com.baidu.mapapi.MapView;
import com.baidu.mapapi.OverlayItem;

public class Main extends MapActivity {
 /** Called when the activity is first created. */

 // 添加百度地图的相关控件
 private MapView mapView=null;
 private BMapManager bMapManager;// 加载地图的引擎
 // 百度地图的key
 private String keyString = "A270F85CD72A01E8519A9677A75FB4016ED9A5A3";
 // 在百度地图上添加一些控件,比如是放大或者缩小的控件
 private MapController mapController;
 private Button button1, button2;
 private EditText editText1, editText2;
 private MKSearch mkSearch=null;// 查找地图

 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  button1 = (Button) findViewById(R.id.button1);
  button2 = (Button) findViewById(R.id.button2);
  editText1 = (EditText) findViewById(R.id.editText1);
  editText2 = (EditText) findViewById(R.id.editText2);
  button1.setOnClickListener(new OnClickListener() {
   
   @Override
   public void onClick(View arg0) {
    // TODO Auto-generated method stub
    GeoPoint geoPoint=new GeoPoint((int) (39.244 * 1E6),
      (int) (117.052 * 1E6));
    mkSearch.reverseGeocode(geoPoint);
   }
  });
  button2.setOnClickListener(new OnClickListener() {
   
   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub
    mkSearch.geocode(editText1.getText().toString(), editText2.getText().toString());
    
   }
  });
  mapView = (MapView) this.findViewById(R.id.bmapView);
  bMapManager = new BMapManager(Main.this);
  // 必须要加载key
  bMapManager.init(keyString, new MKGeneralListener() {

   @Override
   public void onGetPermissionState(int arg0) {
    // TODO Auto-generated method stub
    if (arg0 == 300) {
     Toast.makeText(Main.this, "输入的Key有错!请核实!!", 1).show();
    }
   }

   @Override
   public void onGetNetworkState(int arg0) {
    // TODO Auto-generated method stub

   }
  });
  /*
   * initMapActivity(arg0)是MapActivity的一个方法,
   * MapActivity管理显示MapView中Activity 处理逻辑的基础类, initMapActivity初始化这个类
   */
  bMapManager.start();
  this.initMapActivity(bMapManager);
  mkSearch = new MKSearch();
  mkSearch.init(bMapManager, new MySearchListener());

 }

 public class MySearchListener implements MKSearchListener {

  @Override
  public void onGetAddrResult(MKAddrInfo arg0, int arg1) {
   // TODO Auto-generated method stub
   if(arg1!=0){
    String msg = String.format("错误号:%d ",
      arg1);
    return;
   }
   mapView.getController().animateTo(arg0.geoPt);// 将查找到的标注在地图上
   String msg = String.format("维度:%f 经度:%f\f\n",
     arg0.geoPt.getLatitudeE6() / 1e6,
     arg0.geoPt.getLongitudeE6() / 1e6);
   Toast.makeText(Main.this, msg, 1).show();
   Drawable drawable=getResources().getDrawable(R.drawable.icon);
   //将突破标注在地图上,设置图片的位置,会产生阴影的效果
   drawable.setBounds(0,0,drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight());
   mapView.getOverlays().clear();//去除阴影;
   //创建一个图层
   //mapView.getOverlays().add(object);
   
  }
  public class OverItemT extends ItemizedOverlay<OverlayItem>{
   //注册List可以从服务器端接受一组经纬度,标注在地图上
   private List<OverlayItem> list=new ArrayList<OverlayItem>();

   public OverItemT(Drawable drawable,Context context,GeoPoint geoPoint,String string) {
    super(boundCenterBottom(drawable));
    list.add(new OverlayItem(geoPoint, string, null));
    //刷新一下地图
    populate();
    // TODO Auto-generated constructor stub
   }

   @Override
   protected OverlayItem createItem(int i) {
    return list.get(i);
   }

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

  @Override
  public void onGetBusDetailResult(MKBusLineResult arg0, int arg1) {
   // TODO Auto-generated method stub

  }

  @Override
  public void onGetDrivingRouteResult(MKDrivingRouteResult arg0, int arg1) {

  }

  @Override
  public void onGetPoiResult(MKPoiResult arg0, int arg1, int arg2) {
   // TODO Auto-generated method stub
   if (arg0 == null || arg1 != 0) {
    Toast.makeText(Main.this, "解析失败", 1).show();
    return;
   }
   // 查找的点数大于0,表示查找发哦:
   if (arg0 != null && arg0.getCurrentNumPois() > 0) {
    GeoPoint geoPoint = arg0.getAllPoi().get(0).pt;
    mapView.getController().animateTo(geoPoint);// 将查找到的标注在地图上
    //从GeoPoint中取出经纬度
    String msg = String.format("维度:%f 经度:%f\f\n",
      geoPoint.getLatitudeE6() / 1e6,
      geoPoint.getLongitudeE6() / 1e6);
    msg+="\r\n附近有: ";
    for(int i=0;i<arg0.getAllPoi().size();i++){
     msg+=(arg0.getAllPoi().get(i).name+";");//name方法取出它经纬度所在的名称
     
    }
    Toast.makeText(Main.this, msg, 1).show();
   }

  }

  @Override
  public void onGetSuggestionResult(MKSuggestionResult arg0, int arg1) {
   // TODO Auto-generated method stub

  }

  @Override
  public void onGetTransitRouteResult(MKTransitRouteResult arg0, int arg1) {

  }

  @Override
  public void onGetWalkingRouteResult(MKWalkingRouteResult arg0, int arg1) {

  }
 }

 @Override
 protected void onDestroy() {
  // TODO Auto-generated method stub
  super.onDestroy();
  if (bMapManager != null) {
   bMapManager.destroy();
   bMapManager = null;
  }
 }

 @Override
 protected void onResume() {
  // TODO Auto-generated method stub
  super.onResume();
  if (bMapManager != null) {
   bMapManager.start();
  }
 }

 @Override
 protected void onPause() {
  // TODO Auto-generated method stub
  super.onPause();
  if (bMapManager != null) {
   bMapManager.stop();
  }
 }

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值