android百度地图怎么在点击地图时获取点击的详细地址信息,下面是我写的代码求大神帮帮看看!!!
package com.pc.myappdemo.ui.mall;
import android.os.Bundle;
import android.view.View;
import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BitmapDescriptor;
import com.baidu.mapapi.map.BitmapDescriptorFactory;
import com.baidu.mapapi.map.MapPoi;
import com.baidu.mapapi.map.MapStatusUpdate;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.Marker;
import com.baidu.mapapi.map.MarkerOptions;
import com.baidu.mapapi.map.MyLocationData;
import com.baidu.mapapi.map.OverlayOptions;
import com.baidu.mapapi.model.LatLng;
import com.pc.myappdemo.R;
import com.pc.myappdemo.base.BaseActivity;
import com.pc.myappdemo.share.weibo.models.GeoList;
import com.pc.myappdemo.utils.Consts;
import com.pc.myappdemo.view.MyActionBar;
import butterknife.InjectView;
/**
* Created by Administrator on 2015/11/4.
*/
public class MallTestMap extends BaseActivity
{
@InjectView(R.id.supplier_map_actionbar)
MyActionBar singleActionBar;
@InjectView(R.id.supplier_map_mv)
MapView mapView;
BaiduMap mBaiduMap;
String lat;
String lon;
private BitmapDescriptor bitmap;
BitmapDescriptor bdB = BitmapDescriptorFactory
.fromResource(R.drawable.icon_gcoding);
LocationClient mLocClient;
private boolean isFirstLoc = true;
private Marker mMarkerA;
private Marker mMarkerB;
private String address= "";
private MapView mMapView = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mall_test_map);
injectViews();
initActionBar();
lat = getIntent().getStringExtra(Consts.EXTRA_LATUTIDE);
lon = getIntent().getStringExtra(Consts.EXTRA_LONGITUDE);
mBaiduMap = mapView.getMap();
// mBaiduMap.clear();
// 设置marker图标
bitmap = BitmapDescriptorFactory.fromResource(R.drawable.icon_gcoding);
final LatLng llA = new LatLng(Double.valueOf(lat), Double.valueOf(lon));
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.position(llA);
markerOptions.zIndex(9);
initLoc();
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.mall_test_map);
// 获取地图控件引用
mMapView = (MapView) findViewById(R.id.supplier_map_mv);
mBaiduMap = mMapView.getMap();
//设置是否显示比例尺控件
mMapView.showScaleControl(false);
//设置是否显示缩放控件
mMapView.showZoomControls(false);
mBaiduMap.setOnMapClickListener(new BaiduMap.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);
}
});
}
private void initLoc() {
// 开启定位图层
mBaiduMap.setMyLocationEnabled(true);
// 定位初始化
mLocClient = new LocationClient(this);
mLocClient.registerLocationListener(new MyLocationListenner());
LocationClientOption option = new LocationClientOption();
option.setOpenGps(true);// 打开gps
option.setAddrType("all");
option.setCoorType("bd09ll"); // 设置坐标类型
option.setScanSpan(1000);
option.setIsNeedAddress(true);// 中文地址
mLocClient.setLocOption(option);
mLocClient.start();
}
private void initActionBar() {
singleActionBar.setOnBackClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MallTestMap.this.finish();
}
});
}
@Override
protected void onDestroy() {
mBaiduMap.setMyLocationEnabled(false);
mapView.onDestroy();
super.onDestroy();
}
/**
* 定位SDK监听函数
*/
public class MyLocationListenner implements BDLocationListener {
@Override
public void onReceiveLocation(BDLocation location) {
// map view 销毁后不在处理新接收的位置
if (location == null || mapView == null)
return;
MyLocationData locData = new MyLocationData.Builder()
.accuracy(location.getRadius())
// 此处设置开发者获取到的方向信息,顺时针0-360
.direction(10).latitude(location.getLatitude())
.longitude(location.getLongitude()).build();
mBaiduMap.setMyLocationData(locData);
if (isFirstLoc) {
isFirstLoc = false;
LatLng ll = new LatLng(location.getLatitude(),
location.getLongitude());
MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll);
mBaiduMap.animateMapStatus(u);
}
mLocClient.stop();
}
}
}