对于不同的mark使用extraInfo额外的信息进行区分 加入mark
extraInfo.putString("id", "地图标记点"); MarkerOptions markerOptions = new MarkerOptions(); BitmapDescriptor bitmap = BitmapDescriptorFactory.fromResource(R.mipmap.icon_mark); // 描述图片 markerOptions.position(p1) // 设置位置 .icon(bitmap) // 加载图片 .draggable(true) // 支持拖拽 .extraInfo(extraInfo); // 附加信息 //把绘制的圆添加到百度地图上去 marker = (Marker)mBaiduMap.addOverlay(markerOptions); marker.setExtraInfo(extraInfo); return mBaiduMap;判断单击事件
//覆盖物单击事件监听 mBaiduMap.setOnMarkerClickListener(new BaiduMap.OnMarkerClickListener() { @Override /**mark的点击事件 * 点击某一个mark在他上放显示泡泡 * 加载pop 添加到mapview 把他设置为隐藏 当点击的时候更新pop的位置 设置为显示 */ public boolean onMarkerClick(Marker marker) { Bundle bundle = marker.getExtraInfo(); if (bundle.getString("id").equals("扇形标记点")) { other_showToast("扇形标记点"); mBaiduMap.clear(); //把绘制的圆添加到百度地图上去 g_sDegree = g_sDegree + 5; g_eDegree = g_eDegree + 5; LatLng p1 = myArcCircle.my_now_latLng; LatLng p2 = myArcCircle.getMy_latlon_ememy(); writeEdit(g_sDegree, g_eDegree); mydraw.draw_arc(p1, p2, g_sDegree, g_eDegree, mBaiduMap); } if (bundle.getString("id").equals("地图标记点")) { // //处理点击 ,当点击的时候更新并且显示位置 if (view_button_flag) { drawerLayout.openDrawer(Gravity.RIGHT); } else { drawerLayout.closeDrawer(Gravity.RIGHT); } } view_button_flag = !view_button_flag; return true; } });Marker拖拽事件
mBaiduMap.setOnMarkerDragListener(new BaiduMap.OnMarkerDragListener() { @Override public void onMarkerDrag(Marker marker) { Bundle bundle = marker.getExtraInfo(); if (bundle.getString("id").equals("扇形标记点")) { // other_showToast("扇形标记点"); // Toast.makeText( // MainActivity.this, // "拖拽结束,新位置:" + marker.getPosition().latitude + ", " // + marker.getPosition().longitude, // Toast.LENGTH_LONG).show(); double dragAnger = mydraw.get_latlng_angle2_tan(myArcCircle.getMy_now_latLng(), marker.getPosition()); int trueAnger = (int) (dragAnger / 5) * 5; int centerAnger = (g_sDegree + g_eDegree) / 2; int changesDegree = (trueAnger - centerAnger) + g_sDegree; int changeeDegree = (trueAnger - centerAnger) + g_eDegree; g_sDegree = changesDegree; g_eDegree = changeeDegree; mBaiduMap.clear(); //把绘制的圆添加到百度地图上去 LatLng p1 = myArcCircle.my_now_latLng; LatLng p2 = myArcCircle.getMy_latlon_ememy(); writeEdit(g_sDegree, g_eDegree); mydraw.draw_arc(p1, p2, g_sDegree, g_eDegree, mBaiduMap); marker.updateInfoWindowPosition(mydraw.mminddlelat); } } @Override public void onMarkerDragEnd(Marker marker) { } @Override public void onMarkerDragStart(Marker marker) { Bundle bundle = marker.getExtraInfo(); if (bundle.getString("id").equals("扇形标记点")) { // Toast.makeText( // MainActivity.this, // "拖拽结束,新位置:" + marker.getPosition().latitude + ", " // + marker.getPosition().longitude, // Toast.LENGTH_LONG).show(); dragLong = myArcCircle.d_radius; } } });拖拽事件,需要长按才能响应。