Android定位功能开发(3)——地图服务(地图点与经纬度)

基本的地图服务包括三项功能:

  1. 让地图显示某个经纬度位置;
  2. 获取地图上某个点的经纬度;
  3. 在地图上标注出某个位置。

要让地图显示某个经纬度位置,步骤是:获取BaiduMap对象、设置位置、动画显示。

代码如下:

double longitude = Double.parseDouble(etLongitude.getText().toString());
double latitude = Double.parseDouble(etLatitude.getText().toString());
BaiduMap map = mMapView.getMap();    //  获取BaiduMap对象
map.setMyLocationEnabled(true);
 
//  设置当前位置
MyLocationData.Builder builder = new MyLocationData.Builder();
MyLocationData location = builder.accuracy(10).direction(100).longitude(longitude).latitude(latitude).build();
map.setMyLocationData(location);

//  动画显示
LatLng ll = new LatLng(location.latitude, location.longitude);
MapStatus.Builder statusBuilder = new MapStatus.Builder();
statusBuilder.target(ll).zoom(18.0f);
map.animateMapStatus(MapStatusUpdateFactory.newMapStatus(statusBuilder.build()));
map.setMyLocationEnabled(false);

获取地图上某个点的经纬度一般在MapView的触摸屏事件中进行。在MapView上进行操作,会触发BaiduMap的相关事件,包括点击和长按等。在事件的回调方法中,会传入位置经纬度作为参数。注意,MapView从View继承的OnTouchListener等触摸屏事件不会被触发,如onTouch。响应地图点击和长按的事件的代码如下:

//  地图点击事件
mMapView.getMap().setOnMapClickListener(new BaiduMap.OnMapClickListener() {
            @Override
            public void onMapClick(LatLng latLng) {
                etLongitude.setText(Double.toString(latLng.longitude));
                etLatitude.setText(Double.toString(latLng.latitude));
            }
            @Override
            public void onMapPoiClick(MapPoi mapPoi) {
            }
});

//  地图长按事件
mMapView.getMap().setOnMapLongClickListener(new OnMapLongClickListener() {
      @Override
      public void onMapLongClick(LatLng arg0) {
	        etLongitude.setText(Double.toString(arg0.longitude));
	        etLatitude.setText(Double.toString(arg0.latitude));
      }
});

要在地图上标注出某个位置,需要为地图添加一个图层,并在图层中指出标注的位置和图片。界面和代码如下:

double longitude = Double.parseDouble(etLongitude.getText().toString());
double latitude = Double.parseDouble(etLatitude.getText().toString());
LatLng point = new LatLng(latitude, longitude);
BitmapDescriptor bitmap = BitmapDescriptorFactory.fromResource(R.drawable.icon_marka);
MarkerOptions option = new MarkerOptions();
option.position(point).icon(bitmap);
BaiduMap map = mMapView.getMap();
map.addOverlay(option);

完整代码下载:

https://download.csdn.net/download/nanoage/88544624 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nanoage

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值