android百度地图怎么在点击地图时获取点击的详细地址信息,下面是我写的代码求大神帮帮看看!!!

cst11041 2015-11-05 10:27:43
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();

}

}

}
...全文
498 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
sagittarius1988 2015-11-05
  • 打赏
  • 举报
回复

// LatLng location; 点击事件得到的location
GeoCoder geoCoder = GeoCoder.newInstance();
geoCoder.setOnGetGeoCodeResultListener(new OnGetGeoCoderResultListener(){
     /*
	 * (non-Javadoc)
	 * 
	 * @see com.baidu.mapapi.search.geocode.OnGetGeoCoderResultListener#
	 * onGetGeoCodeResult(com.baidu.mapapi.search.geocode.GeoCodeResult)
	 */
	@Override
	public void onGetGeoCodeResult(GeoCodeResult arg0) {
		// TODO Auto-generated method stub

	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.baidu.mapapi.search.geocode.OnGetGeoCoderResultListener#
	 * onGetReverseGeoCodeResult(com.baidu.mapapi.search.geocode.
	 * ReverseGeoCodeResult)
	 */
	@Override
	public void onGetReverseGeoCodeResult(ReverseGeoCodeResult result) {
		if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {
			return;
		}
		String address = result.getAddress();//解析到的地址
	}
});
// 反向地理解析
geoCoder.reverseGeoCode(new ReverseGeoCodeOption().location(location));

80,357

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧