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

来源:互联网 发布:javascript api 下载 编辑:程序博客网 时间:2024/05/16 15:14

概述:

使用前下载最新的库文件,将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= "";@Overrideprotected 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);// 删除百度地图LoGomMapView.removeViewAt(1);// 设置marker图标bitmap = BitmapDescriptorFactory.fromResource(R.drawable.maker);mBaiduMap.setOnMapClickListener(new OnMapClickListener() {@Overridepublic boolean onMapPoiClick(MapPoi arg0) {// TODO Auto-generated method stubreturn false;}//此方法就是点击地图监听@Overridepublic 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,用于在地图上添加MarkerMarkerOptions 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() {@Overridepublic void onGetReverseGeoCodeResult(ReverseGeoCodeResult arg0) {//获取点击的坐标地址address = arg0.getAddress();System.out.println("address="+address);}@Overridepublic void onGetGeoCodeResult(GeoCodeResult arg0) {}});}});}@Overrideprotected void onDestroy() {super.onDestroy();// 在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理mMapView.onDestroy();}@Overrideprotected void onResume() {super.onResume();// 在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理mMapView.onResume();}@Overrideprotected void onPause() {super.onPause();// 在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理mMapView.onPause();}}



0 0