Android百度地图开发实现点击地图添加Marker并获取地址信息
jopen
9年前
概述:
使用前下载最新的库文件,将liblocSDK4.so文件拷贝到libs/armeabi目录下,及locSDK4.0.jar文件拷贝到工程的libs目录下
BaiduMap.OnMapClickListener 地图单击事件监听接口
GeoCoder 地理编码查询接口
reverseGeoCode(ReverseGeoCodeOption option) 发起反地理编码请求(经纬度->地址信息)
setOnGetGeoCodeResultListener(OnGetGeoCoderResultListener listener) 设置查询结果监听者
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(); } }