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

关注微信号:javalearns   随时随地学Java

或扫一扫

随时随地学Java


述:

使用前下载最新的库文件,将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();  
        }  

}

.................... 【.........阅读全文】

Java免费学习   Java自学网 http://www.javalearns.com

关注微信号:javalearns   随时随地学Java

或扫一扫

随时随地学Java

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值