Android百度地图开发实现点击地图添加Marker并获取地址信息

jopen 9年前

概述:

使用前下载最新的库文件,将liblocSDK4.so文件拷贝到libs/armeabi目录下,及locSDK4.0.jar文件拷贝到工程的libs目录下

BaiduMap.OnMapClickListener   地图单击事件监听接口 
GeoCoder   地理编码查询接口 
reverseGeoCode(ReverseGeoCodeOption option)   发起反地理编码请求(经纬度->地址信息)
setOnGetGeoCodeResultListener(OnGetGeoCoderResultListener listener)   设置查询结果监听者

1.首先在布局文件添加mapview

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"        xmlns:top="http://schemas.android.com/apk/res-auto"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:orientation="vertical" >            <com.baidu.mapapi.map.MapView            android:id="@+id/bmapView"            android:layout_width="fill_parent"            android:layout_height="fill_parent"            android:clickable="true" />        </LinearLayout>

2.MainActivity里添加使用

    public class MapActivity extends Activity {            private MapView mMapView = null;            private BaiduMap mBaiduMap;            private BitmapDescriptor bitmap;            private String address= "";                        @Override            protected void onCreate(Bundle savedInstanceState) {                super.onCreate(savedInstanceState);                // 在使用SDK各组件之前初始化context信息,传入ApplicationContext                // 注意该方法要再setContentView方法之前实现                SDKInitializer.initialize(getApplicationContext());                setContentView(R.layout.activity_map);                                // 获取地图控件引用                mMapView = (MapView) findViewById(R.id.bmapView);                mBaiduMap = mMapView.getMap();                //设置是否显示比例尺控件                mMapView.showScaleControl(false);                //设置是否显示缩放控件                mMapView.showZoomControls(false);                // 删除百度地图LoGo                mMapView.removeViewAt(1);                                                // 设置marker图标                bitmap = BitmapDescriptorFactory.fromResource(R.drawable.maker);                mBaiduMap.setOnMapClickListener(new OnMapClickListener() {                            @Override                    public boolean onMapPoiClick(MapPoi arg0) {                        // TODO Auto-generated method stub                        return false;                    }                            //此方法就是点击地图监听                    @Override                    public void onMapClick(LatLng latLng) {                        //获取经纬度                        double latitude = latLng.latitude;                        double longitude = latLng.longitude;                        System.out.println("latitude=" + latitude + ",longitude=" + longitude);                        //先清除图层                        mBaiduMap.clear();                        // 定义Maker坐标点                        LatLng point = new LatLng(latitude, longitude);                        // 构建MarkerOption,用于在地图上添加Marker                        MarkerOptions options = new MarkerOptions().position(point)                                .icon(bitmap);                        // 在地图上添加Marker,并显示                        mBaiduMap.addOverlay(options);                        //实例化一个地理编码查询对象                        GeoCoder geoCoder = GeoCoder.newInstance();                        //设置反地理编码位置坐标                        ReverseGeoCodeOption op = new ReverseGeoCodeOption();                        op.location(latLng);                        //发起反地理编码请求(经纬度->地址信息)                        geoCoder.reverseGeoCode(op);                        geoCoder.setOnGetGeoCodeResultListener(new OnGetGeoCoderResultListener() {                                                        @Override                            public void onGetReverseGeoCodeResult(ReverseGeoCodeResult arg0) {                                //获取点击的坐标地址                                address = arg0.getAddress();                                System.out.println("address="+address);                            }                                                        @Override                            public void onGetGeoCodeResult(GeoCodeResult arg0) {                            }                        });                    }                });            }                    @Override            protected void onDestroy() {                super.onDestroy();                // 在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理                mMapView.onDestroy();            }                    @Override            protected void onResume() {                super.onResume();                // 在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理                mMapView.onResume();            }                    @Override            protected void onPause() {                super.onPause();                // 在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理                mMapView.onPause();            }        }