Gostaria de repassar o conhecimento de como criar Bookmarks em um menu em uma aplicação ArcEngine.
Segue primeiramente o código para adicionar itens no menu dinamicamente. Cria-se algumas variáveis membro na sua classe que contenha o menu.
IList
DlgFavoritos dlgFavoritos;
int index = 0;
Depois criamos o menu com um ítem Adicionar Favoritos...
Após isso no evento click() do menu adicione o seguinte código
private void adicionarFavoritoToolStripMenuItem_Click(object sender, EventArgs e)
{
string nomeFavorito;
try
{
if (dlgFavoritos == null)
{
dlgFavoritos = new DlgFavoritos();
dlgFavoritos.ShowDialog();
}
else
{
dlgFavoritos.ShowDialog();
}
}
finally
{
nomeFavorito = dlgFavoritos.txtBoxFavorito.Text;
if (( dlgFavoritos.BookmarkSolicitado ) && ( !existeNoMenu(nomeFavorito, menuStripPrincipal) ))
{
tsItem2.Add(new ToolStripMenuItem());
tsItem2[index].Name = nomeFavorito;
tsItem2[index].Text = nomeFavorito;
( (ToolStripMenuItem)menuStripPrincipal.Items[menuStripPrincipal.Items.Count - 2] ).DropDownItems.AddRange(new ToolStripItem[] { tsItem2[index] });
tsItem2[index].Click += new System.EventHandler(this.ZoomTo);
AddSpatialBookMark(axMapControlPrincipal.ActiveView, tsItem2[index].Name);
index++;
dlgFavoritos.BookmarkSolicitado = false;
MessageBox.Show("Favorito: " + nomeFavorito + " criado com sucesso.", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else if (existeNoMenu(nomeFavorito,menuStripPrincipal) )
{
MessageBox.Show("Esta entrada no menu já existe favor tentar outro nome", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
}
este código adicionará item a item no menu associando o mesmo evento para todos os ítens.
Agora é só criar o método que adiciona o bookmark ao seu mapa e boa sorte.
Segue o método que faz a criação de bookmaarks
private void ZoomTo(object sender, EventArgs e)
{
irParaBookmark(axMapControl1.ActiveView, ( (ToolStripItem)sender ).Name);
}
public static void irParaBookmark(IActiveView activeView, String nomeBookMark)
{
for (int i = 0; i <>
{
if (aoiBookmark[i].Name == nomeBookMark)
{
aoiBookmark[i].ZoomTo(activeView.FocusMap);
activeView.Refresh();
}
}
}
#region variaveis bookmark
public static IList
public static IMapBookmarks mapBookmarks;
public static int index = 0;
#endregion
public static void AddSpatialBookMark(IActiveView activeView, String bookmarkName)
{
if (activeView == null || bookmarkName == null)
{
return;
}
// Criar um novo bookmark e setar sua localização na extensão corrente do mapa atual
aoiBookmark.Add(new AOIBookmarkClass());
// Setar Bookmark para a extensão correte
aoiBookmark[index].Location = activeView.Extent;
aoiBookmark[index].Name = bookmarkName;
// Adiciona o bookmark à coleção de bookmark do mapa
// Para o ArcGIS Desktop isto irá adicionar o bookmark ao menu Bookmarks da visão
mapBookmarks = (IMapBookmarks)activeView; // Dynamic Cast
mapBookmarks.AddBookmark(aoiBookmark[index]);
index++;
}
Espero que lhes sejam útil pois é uma funcionalidade que melhora a produtividade de quem passa o dia trabalhando com mapas.
A Esri já possui sua própria ferramenta mas preferí customizá-la.
Ezequias.
Nenhum comentário:
Postar um comentário