AndroidStudio 中使用 百度地图 <二> 百度地图的使用,个人摘要

之前摘录了百度地图的集成:AndroidStudio 中使用 百度地图 <一> 百度地图的导入和集成,个人摘要

现在摘录使用百度地图,包括设置地图的类型,交通状况 以及设置如何设置标记。


0:可以设置地图是卫星地图还是否带有交通路况,记住这些都是通过MapView.getMap得到的map来进行设置

        mMapView = (MapView) findViewById(R.id.bmapView);
        map = mMapView.getMap();
        map.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
        map.setTrafficEnabled(true); 

具体如下:

protected void onCreate(Bundle savedInstanceState) {
.....

//获取地图控件引用
mMapView = (MapView) findViewById(R.id.bmapView);
map = mMapView.getMap();
//设置地图类型:普通2D,卫星图
map.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
//2.是否显示交通路况
map.setTrafficEnabled(true);

  .....
}

1:添加一个标记,

             MarkerOptions options = new MarkerOptions();
             LatLng position = new LatLng(39.963175,116.400244);
             options.position(position);
             BitmapDescriptor descriptor = BitmapDescriptorFactory.fromResource(R.mipmap.ic_launcher);
             options.icon(descriptor);
             options.draggable(true);
             map.addOverlay(options)

具体如下:


首先在布局里面添加一个button

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="btnAddMarker"
    android:text="添加一个机器人"/>

public void btnAddMarker(View view) {
  //在地图上添加一个图片显示的标记(Marker         //用于地图上显示图像(场景:地图上标记用户头像,搜索结果大头钉。)
         //添加的步骤,1:准备覆盖物参数,只能通过参数来添加。
         //2:通过baidumap 来添加参数,生成真正的覆盖物对象
         //3. 设置覆盖物的参数,实现动态的处理:
         MarkerOptions options = new MarkerOptions();
         //覆盖物是与地图绑定的,内部采用仅为度作为位置定义
         LatLng position = new LatLng(39.963175,116.400244);
         options.position(position);
         //latitue 维度
         //longitute 经度
         //参数一:维度
         //参数二:进度
         //所有的覆盖物都是与地图相关的

         //!!!Marker 必须设置图片,否则抛出异常
         BitmapDescriptor descriptor = BitmapDescriptorFactory.fromResource(R.mipmap.ic_launcher);
         options.icon(descriptor);

         //通过Options 来添加Marker
         //Overlay 代表覆盖物的意思,我们的mark 就是覆盖物
         //添加Marker 可以设置是否可以拖拽
        options.draggable(true);

        //添加附加属性:
        //通过Bundle 可以传递附加的特定与当前Mark的信息
        Bundle info = new Bundle();
        info.putString("name", "天安门" + System.currentTimeMillis());
        options.extraInfo(info);//为了实现点击不同的处理和显示;

    Marker marker = (Marker)map.addOverlay(options);
    //marker的特点是地图缩小,机器人还不缩小。
}


2:实现拖拽的时候的回调
=================================================================
Marker 叫做标记标记,Overlay 才叫做覆盖物========================
=================================================================
OverLaylay 是父类,Marker是子类。
map.addOverlay(options)的返回值是一个Overlay


然后通过强转来得到Marker,
然后设置map的拖动获取监听,
这个下面的设置要放到onCreate方法里面去。
     map.setOnMarkerDragListener(this);
回调方法有三个onMarkerDrag,onMarkerDragStart,onMarkerDragEnd,每个里面都有一个markder的参数,可以通过它来获取当前的位置:
        double latitude = marker.getPosition().latitude;
        double longitude = marker.getPosition().longitude;


具体如下:

protected void onCreate(Bundle savedInstanceState) {
.....

//3.设置Marker的拖拽处理
//所有关于地图中的额股改无的师傅支持,都是由BaiduMap类对象来实际完成的
//设置拖拽监听也是由BaiduMap 来完成的。
map.setOnMarkerDragListener(this);
  .....
}


@Override
public void onMarkerDrag(Marker marker) {

}

@Override
public void onMarkerDragEnd(Marker marker) {
    double latitude = marker.getPosition().latitude;
    double longitude = marker.getPosition().longitude;
    Toast.makeText(this,"latitude "+latitude+" longtitude"+longitude,Toast.LENGTH_LONG).show();
}

@Override
public void onMarkerDragStart(Marker marker) {

}



3:实现点击的时候的回调。
添加时候添加一个Bundler的参数,这里面用来传递参数信息。
 Bundle info = new Bundle();
        info.putString("name","天安门"+System.currentTimeMillis());
        options.extraInfo(info);//为了实现点击不同的处理和显示;
      
map.setOnMarkerClickListener(this);
回调方法里面的返回值还是false。
@Override
    public boolean onMarkerClick(Marker marker) {
        Bundle extraInfo = marker.getExtraInfo();
        String name ="No Name";
        if(extraInfo!=null){
            if(extraInfo.containsKey("name"))
            name=extraInfo.getString("name");
        }
        Toast.makeText(this,"name is "+name,Toast.LENGTH_LONG).show();
        return false;

    }

public void btnAddMarker(View view) {
  .....
        //添加附加属性:
        //通过Bundle 可以传递附加的特定与当前Mark的信息
        Bundle info = new Bundle();
        info.putString("name", "天安门" + System.currentTimeMillis());
        options.extraInfo(info);//为了实现点击不同的处理和显示;
  .....
}
 
 
protected void onCreate(Bundle savedInstanceState) {
.....
map.setOnMarkerClickListener(this);
.....
}


@Override
public boolean onMarkerClick(Marker marker) {
    Bundle extraInfo = marker.getExtraInfo();
    String name ="No Name";
    if(extraInfo!=null){
        if(extraInfo.containsKey("name"))
        name=extraInfo.getString("name");
    }
    Toast.makeText(this,"name is "+name,Toast.LENGTH_LONG).show();
    return false;
}




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值