正向编码与反向编码的使用

public class MainActivity extends Activity {

   //获得控件对象

   private MapView mView;

   //获得地图对象

   private BaiduMap bMap;

   //两个输入框

   private EditText city,address;

   //获取按钮对象

   private Button btn;

   //创建地理编码的对象

   private GeoCoder coder;

  

 

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        SDKInitializer.initialize(getApplicationContext());

        setContentView(R.layout.activity_main);

        //初始化控件

        city=(EditText) findViewById(R.id.city);

        address=(EditText) findViewById(R.id.address);

        btn=(Button) findViewById(R.id.btn);

       

        mView=(MapView) findViewById(R.id.mview);

        bMap=mView.getMap();

     //113.310525,23.148497(广州动物园)

       

        //标注对象初始化

        MarkerOptions marker=new MarkerOptions();

        //设置标注对象的基本信息

        //图片

        marker.icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher));

        //地理坐标

        final LatLng pos=new LatLng(23.148497, 113.310525);

        //标注在那个地理坐标上显示

        marker.position(pos);

        //标注信息

        marker.title("广州动物园");

        //设置标注可以被拖拽,一定要在添加到地图之前添加

        marker.draggable(true);

        //将标注添加到地图上

        bMap.addOverlay(marker);

        //更改地图的默认中心

        bMap.setMapStatus(MapStatusUpdateFactory.newLatLng(pos));

       

        //设置标注点的点击事件

        bMap.setOnMarkerClickListener(new OnMarkerClickListener(){

       

        @Override

        public boolean onMarkerClick(Marker arg0) {

           //当点击标注点的时候弹出弹出窗图层(infowindow

           //获取被点击的标注点的相关信息

           String title=arg0.getTitle();

           Button btn=new Button(MainActivity.this);

           btn.setText(title);

           // 参数1InfoWindow的视图 2InfoWindow显示的位置

           // 3InfoWindow相对于自身的显示位置在Y轴上的偏移量

           InfoWindow window=new InfoWindow(btn, pos, -50);

           //让弹出窗层在地图上显示出来

           bMap.showInfoWindow(window);

           return false;

        }

      });

       

        //监听标注点被拖拽

        bMap.setOnMarkerDragListener(newOnMarkerDragListener() {

       

        @Override

        public void onMarkerDragStart(Marker arg0) {

           // TODO Auto-generatedmethod stub

           System.out.println("标注点开始拖动");

        }

       

        @Override

        public void onMarkerDragEnd(Marker arg0) {

           // TODO Auto-generatedmethod stub

           System.out.println("标注点结束拖动");

           //获得标注点的坐标

           LatLng pos=arg0.getPosition();

           //反向编码设置

           ReverseGeoCodeOption opt=new ReverseGeoCodeOption();

           opt.location(pos);

           //进行反向编码

           coder.reverseGeoCode(opt);

          

        }

       

        @Override

        public void onMarkerDrag(Marker arg0) {

           // TODO Auto-generatedmethod stub

           System.out.println("标注点正在拖动");

          

        }

      });

        //创建地理编码器对象

        coder=GeoCoder.newInstance();

       

        //编码结果的监听

        coder.setOnGetGeoCodeResultListener(newOnGetGeoCoderResultListener() {

       

        @Override

        public void onGetReverseGeoCodeResult(ReverseGeoCodeResult arg0) {

           System.out.println("反向编码的结果");

           String address=arg0.getAddress();

           System.out.println("=============================="+address);

          

        }

       

        @Override

        public void onGetGeoCodeResult(GeoCodeResult arg0) {

           // TODO Auto-generatedmethod stub

           System.out.println("正向编码的结果");

           //获得坐标

           LatLng pos=arg0.getLocation();

           bMap.clear();//清空百度地图上的tuc

           //设置标注点

           MarkerOptions marker=new MarkerOptions();

        marker.icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher));

           marker.position(pos);

           bMap.addOverlay(marker);

          

           //让标注点可以移动

           marker.draggable(true);

           bMap.setMapStatus(MapStatusUpdateFactory.newLatLng(pos));

          

          

        }

      });

        btn.setOnClickListener(new OnClickListener(){

       

        @Override

        public void onClick(View v) {

           // TODO Auto-generatedmethod stub

           String sCity = city.getText().toString().trim();

           String sAddress = address.getText().toString().trim();

          

           //进行正向编码

           GeoCodeOption option=new GeoCodeOption();

           option.city(sCity);

           option.address(sAddress);

           //发起正向编码

           coder.geocode(option);

          

        }

      });

    }

 

 

    @Override}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值