zoukankan      html  css  js  c++  java
  • 通过百度地图API实现搜索地址--第三方开源--百度地图(三)

    搜索地址功能是建立在能够通过百度地图API获取位置的基础上

    通过百度地图定位获取位置详情:http://www.cnblogs.com/zzw1994/p/5008134.html

      1 package com.zzw.baidumappoint;
      2 
      3 import com.baidu.location.BDLocation;
      4 import com.baidu.location.BDLocationListener;
      5 import com.baidu.location.LocationClient;
      6 import com.baidu.location.LocationClientOption;
      7 import com.baidu.mapapi.SDKInitializer;
      8 import com.baidu.mapapi.map.BaiduMap;
      9 import com.baidu.mapapi.map.MapStatusUpdate;
     10 import com.baidu.mapapi.map.MapStatusUpdateFactory;
     11 import com.baidu.mapapi.map.MapView;
     12 import com.baidu.mapapi.map.MyLocationData;
     13 import com.baidu.mapapi.model.LatLng;
     14 import com.baidu.mapapi.search.geocode.GeoCodeOption;
     15 import com.baidu.mapapi.search.geocode.GeoCodeResult;
     16 import com.baidu.mapapi.search.geocode.GeoCoder;
     17 import com.baidu.mapapi.search.geocode.OnGetGeoCoderResultListener;
     18 import com.baidu.mapapi.search.geocode.ReverseGeoCodeResult;
     19 
     20 import android.app.Activity;
     21 import android.os.Bundle;
     22 import android.view.View;
     23 import android.view.View.OnClickListener;
     24 import android.widget.EditText;
     25 import android.widget.Toast;
     26 
     27 public class MainActivity extends Activity {
     28 
     29     private LocationClient mLocationClient;
     30     private BaiduMap mBaiduMap;
     31     private GeoCoder mGeoCoder;
     32 
     33     @Override
     34     protected void onCreate(Bundle savedInstanceState) {
     35         super.onCreate(savedInstanceState);
     36         SDKInitializer.initialize(getApplicationContext());// 使程序不崩溃的作用
     37         setContentView(R.layout.activity_main);
     38 
     39         final EditText city_edit = (EditText) findViewById(R.id.city);
     40         final EditText addr_edit = (EditText) findViewById(R.id.addr);
     41         // 获取LocationClient
     42         mLocationClient = new LocationClient(this);
     43 
     44         // 获得GeoCoder
     45         mGeoCoder = GeoCoder.newInstance();
     46         mGeoCoder.setOnGetGeoCodeResultListener(new OnGetGeoCoderResultListener() {
     47 
     48             @Override
     49             public void onGetReverseGeoCodeResult(ReverseGeoCodeResult result) {
     50 
     51             }
     52 
     53             @Override
     54             public void onGetGeoCodeResult(GeoCodeResult result) {
     55                 try{
     56                     LatLng ll = result.getLocation();
     57                     // 只是完成了定位
     58                     MyLocationData locData = new MyLocationData.Builder().latitude(ll.latitude).longitude(ll.longitude)
     59                             .build();
     60 
     61                     // 设置图标在地图上的位置
     62                     mBaiduMap.setMyLocationData(locData);
     63 
     64                     // 开始移动百度地图的定位地点到中心位置
     65                     MapStatusUpdate u = MapStatusUpdateFactory.newLatLngZoom(ll, 16.0f);
     66                     mBaiduMap.animateMapStatus(u);
     67                 }catch(Exception e){
     68                     Toast.makeText(getApplicationContext(), "请检查地址", 0).show();
     69                 }
     70             }
     71         });
     72 
     73         findViewById(R.id.GO).setOnClickListener(new OnClickListener() {
     74 
     75             @Override
     76             public void onClick(View v) {
     77                 try {
     78                     String city = city_edit.getText() + "";
     79                     String addr = addr_edit.getText() + "";
     80                     city_edit.setText("");
     81                     addr_edit.setText("");
     82                     mGeoCoder.geocode(new GeoCodeOption().city(city.trim()).address(addr.trim()));
     83                 } catch (Exception e) {
     84                     
     85                 }
     86 
     87             }
     88         });
     89         LocationClientOption option = new LocationClientOption();
     90         option.setCoorType("bd09ll");
     91         mLocationClient.setLocOption(option);
     92 
     93         // 获取BaiduMap
     94         MapView mapView = (MapView) findViewById(R.id.mapView);
     95         mBaiduMap = mapView.getMap();
     96 
     97         // 显示出当前位置的小图标
     98         mBaiduMap.setMyLocationEnabled(true);
     99 
    100         MyLocationListener mListener = new MyLocationListener();
    101         mLocationClient.registerLocationListener(mListener);
    102         mLocationClient.start();
    103     }
    104 
    105     @Override
    106     protected void onDestroy() {
    107         mLocationClient.stop();
    108         super.onDestroy();
    109     }
    110 
    111     private class MyLocationListener implements BDLocationListener {
    112 
    113         @Override
    114         public void onReceiveLocation(BDLocation location) {
    115 
    116             // 只是完成了定位
    117             MyLocationData locData = new MyLocationData.Builder().latitude(location.getLatitude())
    118                     .longitude(location.getLongitude()).build();
    119 
    120             // 设置图标在地图上的位置
    121             mBaiduMap.setMyLocationData(locData);
    122 
    123             // 开始移动百度地图的定位地点到中心位置
    124             LatLng ll = new LatLng(location.getLatitude(), location.getLongitude());
    125             MapStatusUpdate u = MapStatusUpdateFactory.newLatLngZoom(ll, 16.0f);
    126             mBaiduMap.animateMapStatus(u);
    127         }
    128 
    129     }
    130 
    131 }
  • 相关阅读:
    COCI 2018/2019 CONTEST #2 Solution
    点分治学习笔记
    【Treap 例题】神秘岛(island)
    【暴力Treap 或 离线归并】子串计数(genies)
    【拓扑 字符串还原 + 线段树维护】奇洛金卡达(father)
    UVA 10217 A Dinner with Schwarzenegger!!!---数学
    URAL-1018 Binary Apple Tree---树形DP
    ZOJ-3278 8G Island---二分第k大
    UVA-1152-4 Values whose Sum is 0---中途相遇法
    SGU---462 Electrician 最大生成树
  • 原文地址:https://www.cnblogs.com/zzw1994/p/5009656.html
Copyright © 2011-2022 走看看