当前位置: 代码迷 >> Android >> Android百度map开发实现点击map添加Marker并获取地址信息
  详细解决方案

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

热度:17   发布时间:2016-04-27 22:46:35.0
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();          }      }

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

或扫一扫

?

?

随时随地学Java

  相关解决方案