本篇文章将讲述地图的长按监听,(单击之前有讲过)结合上一章,生成marker,以及拖拽事件和不同marker的监听。
首先
private Marker mFavoMarker; // 收藏的点
private MarkerOptions mFavoOptions; // 收藏点的设置
private BitmapDescriptor mFavoIcon = BitmapDescriptorFactory
.fromResource(R.mipmap.ic_mylocation); // marker的图标
private LatLng mFavoLatlng; // 收藏点的经纬度
在初始化控件后,为地图控件添加长按监听:
public void onMapLongClick(LatLng point)
{
mFavoOptions = new MarkerOptions()
.position(point) //设置marker的位置
.icon(mFavoIcon) //设置marker图标
.zIndex(9) //设置marker所在层级
.draggable(true); //设置手势拖拽
// 将marker添加到地图上
mFavoMarker = (Marker) (mBaiduMap.addOverlay(mFavoOptions));
}
});
上面的代码中,在长按事件中,构建了options 对象并添加到了地图上,阅读API后发现
//调用BaiduMap对象的setOnMarkerDragListener方法设置marker拖拽的监听
mBaiduMap.setOnMarkerDragListener(new BaiduMap.OnMarkerDragListener()
{
public void onMarkerDrag(Marker marker)
{
//拖拽中
}
public void onMarkerDragEnd(Marker marker)
{
//拖拽结束
}
public void onMarkerDragStart(Marker marker)
{
//开始拖拽
}
});
应该在这个方法中实现。下面我们在onMarkerDragEnd方法里添加如下代码就可以获取到经纬度了:
地图上还有其他的marker点,如何区分不同的marker的点击时间呢?
看下面一段代码
// 飞机点事件监听
mBaiduMap.setOnMarkerClickListener(new BaiduMap.OnMarkerClickListener()
{
@Override
public boolean onMarkerClick(Marker marker)
{
if (marker == mMarker1) //
{
} else if (marker == mMarker2) // 此marker对应的是
{
}
return true;
}
});
这样就可以监听不同的marker的事件了。
Demo地址
http://download.csdn.net/detail/u012552275/9680944