百度地图已经定位到当前位置和商家位置,但是商家位置想做个标注和一些信息展示,要怎么弄?一直加不上去...

可乐8 发布于 2014/10/18 21:43
阅读 6K+
收藏 0

代码如下,如何添加进去?

public class BaiduMapActivity extends Activity {

private MapView mapView = null;// 百度地图
private BaiduMap mBaiduMap = null;// 获取百度地图图层进行操作
private LocationClient mLoClient;// 定位相关
private LocationMode mCurrentMode;// 定位类型
private String merchantName = "";// 商家名称
private double lng = 0; // 商家位置
private double lat = 0;
private Toast toast;// 提示框
// 弹出窗口图层的View
private View mPopupView;
private BDLocation location1;
private BDLocation location;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 该方法在setcontentview方法之前使用
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.baidumap_layout);


lng = getIntent().getDoubleExtra("lng", 0);
lat = getIntent().getDoubleExtra("lat", 0);
merchantName = getIntent().getStringExtra("merchantName");


// 获取地图控件引用
mapView = (MapView) findViewById(R.id.bdmapsView);
// 手动点击定位当前位置
((Button) findViewById(R.id.location))
.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
requstlocation();
}
});


mBaiduMap = mapView.getMap();
// 开启定位图层
mBaiduMap.setMyLocationEnabled(true);
mLoClient = new LocationClient(getApplicationContext());// 初始化定位
mLoClient.registerLocationListener(new Mylistener());// 设置监听事件
// 定位相关的配置
LocationClientOption option = new LocationClientOption();
option.setOpenGps(true);// 打开gps
option.setCoorType("bd0911");
mLoClient.setLocOption(option);
mLoClient.start();
mLoClient.requestLocation();
// LocationOverlay myLocationOverlay = new LocationOverlay(mapView);
// 定位到商家当前位置
// LatLng ll = new LatLng(lat, lng);
// MapStatusUpdate u = MapStatusUpdateFactory.newLatLngZoom(ll, 17);
// mBaiduMap.animateMapStatus(u);


// MyLocationOverlay myLocationOverlay = new
// MyLocationOverlay(mMapView);
// LocationData locData = new LocationData();
// 手动将位置源置为天安门,在实际应用中,请使用百度定位SDK获取位置信息,要在SDK中显示一个位置,需要使用百度经纬度坐标(bd09ll)
// locData.latitude = 39.945;
// locData.longitude = 116.404;
// locData.direction = 2.0f;
// myLocationOverlay.setData(locData);
// mMapView.getOverlays().add(myLocationOverlay);
// mMapView.refresh();
// mMapView.getController().animateTo(new
// GeoPoint((int)(locData.latitude*1e6), (int)(locData.longitude*
// 1e6)));
}


// 手动请求定位
public void requstlocation() {
boolean isRequest = true;
if (mLoClient != null && mLoClient.isStarted()) {
Toast.makeText(BaiduMapActivity.this, "正在定位", Toast.LENGTH_LONG)
.show();
mLoClient.requestLocation();
// LatLng ll = new LatLng(location.getLatitude(),
// location.getLongitude());
// MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll);
// mBaiduMap.animateMapStatus(u);
}
}


// 显示弹出窗口图层popupoverlay
// private void showPopupOverlay(BDLocation location) {
// TextView popTextView = (TextView) mPopupView.findViewById(R.id.text1);
// popTextView.setText("我的位置\n" + 11);
// LatLng ll = new LatLng(location.getLatitude(), location.getLongitude());
// MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll);
// mBaiduMap.animateMapStatus(u);
// // mPopupView.showPopup(getBitmapFromView(popTextView),
// // new GePoint((int) (location1.getLatitude() * 1e6),
// // (int) (location1.getLongitude() * 1e6), 0), 15);
// }


// 显示位置消息
// private void showToast(String msg) {
// if (toast == null) {
// toast = Toast.makeText(this, msg, Toast.LENGTH_SHORT);
// } else {
// toast.setText(msg);
// toast.setDuration(Toast.LENGTH_SHORT);
// }
// toast.show();
// }


// 商家标题
@Override
// public void setTitle(CharSequence title) {
// // TODO Auto-generated method stub
// super.setTitle(title);
// }


// 将view转换成Bimap的方法
// public static Bitmap getBitmapFromView(View view) {
// view.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
// MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
// view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
// view.buildDrawingCache();
// Bitmap bitmap = view.getDrawingCache();
// return bitmap;
// }


// 定位
protected void onStart() {
super.onStart();
// 启动定位
if (!mLoClient.isStarted()) {
mLoClient.start();
}
}


public class Mylistener 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(100).latitude(location.getLatitude())
.longitude(location.getLongitude()).build();
mBaiduMap.setMyLocationData(locData); // 设置定位数据
// location.setLatitude(getlatpoint);


// LatLng ll = new LatLng(location.getLatitude(),
// location.getLongitude());
// MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll);
// mBaiduMap.animateMapStatus(u);


// 定位到商家当前位置
LatLng ll = new LatLng(lat, lng);
MapStatusUpdate u = MapStatusUpdateFactory.newLatLngZoom(ll, 17);
mBaiduMap.animateMapStatus(u);
}
}


@Override
protected void onDestroy() {
// 关闭定位图层
mBaiduMap.setMyLocationEnabled(false);
mapView.onDestroy();
mapView = null;
super.onDestroy();
}


@Override
protected void onResume() {
// 在activity执行onResume时执行MapView. onResume (),实现地图生命周期管理
mapView.onResume();
super.onResume();
}


@Override
protected void onPause() {
// 在activity执行onResume时执行mMapView. onPause (),实现地图生命周期管理
mapView.onPause();
super.onPause();
}


}
加载中
0
imknown
imknown

用Point+PopupOverlay试一试, 可以参考一下基类Overlay的用法.

返回顶部
顶部