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

概述:

使用前下载最新的库文件,将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><span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">.</span>

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();
	}
}



  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值