Editando coordenadas
Dados do artigo
Exemplo de código
Compatibilidade
Artigo
| ID | Creation date | August 9, 2009 | |
| Platform | S60 3rd Edition S60 3rd Edition FP2 and later | Tested on devices | |
| Category | Symbian C++ | Subcategory | Location |
Contents |
Resumo
Este artigo fornece um exemplo para mostrar como as coordenadas de latitude e longitude podem ser editadas usando GUI. Para proporcionar facilidades a edição CAknLocationEditor pode ser utilizado. Veja mais sobre CAknLocationEditor aqui.
CAknLocationEditor fornece um meio para editar uma latitude ou coordenar uma longitude, mas não tanto. Para editar ambos, este controle deve ser colocado em um CAknMultilineDataQueryDialog onde a primeira e a segunda linha contém a latitude e a longitude respectivamente.
Arquivo MMP
As seguintes capacidades e as bibliotecas são exigidas:
CAPABILITY none
LIBRARY lbs.lib // para TPosition
LIBRARY avkon.lib // para CAknLocationEditor e CAknMultiLineDataQueryDialog
LIBRARY eikctl.lib eikcoctl.lib uiklaf.lib form.lib
Arquivos
O recurso de ficheiro define a latitude e longitude dos editores para a entrada de dados caixa de diálogo. Lembre-se de incluir eikctl.rsg uma vez que este tem a definição de R_EIK_LATITUDE_AND_LONGITUDE.
RESOURCE DIALOG r_enter_coordinates_query
{
flags = EGeneralQueryFlags;
buttons = R_AVKON_SOFTKEYS_OK_CANCEL;
items =
{
DLG_LINE
{
type = EAknCtMultilineQuery;
id = EMultilineFirstLine;
control = AVKON_DATA_QUERY
{
layout = EMultiDataFirstLocationEd;
label = "Latitude";
control = LATITUDE_EDITOR
{
flags = ELocationEdFlagLatitude;
latlongresourceid = R_EIK_LATITUDE_AND_LONGITUDE;
};
};
},
DLG_LINE
{
type = EAknCtMultilineQuery;
id = EMultilineSecondLine;
control = AVKON_DATA_QUERY
{
layout = EMultiDataSecondLocationEd;
label = "Longitude";
control = LONGITUDE_EDITOR
{
flags = ELocationEdFlagLongitude;
latlongresourceid = R_EIK_LATITUDE_AND_LONGITUDE;
};
};
}
};
}
Código fonte
Para invocar o editor, é então um simples caso de apenas criar uma instância da CAknMultiLineDataQueryDialog com o recurso a partir de cima e de um objeto e o TPosition diálogo será exibido permitindo a coordenada de ser editada.
TPosition pos;
pos.SetCoordinate(0.0, 0.0);
CAknMultiLineDataQueryDialog* dlg = CAknMultiLineDataQueryDialog::NewL(pos);
if (dlg->ExecuteLD(R_ENTER_COORDINATES_QUERY))
{
HBufC* latitude = CAknLocationEditor::DisplayableLocationL( pos, CAknLocationEditor::ELatitudeOnly );
CleanupStack::PushL(latitude);
HBufC* longitude = CAknLocationEditor::DisplayableLocationL( pos, CAknLocationEditor::ELongitudeOnly );
CleanupStack::PushL(longitude);
TBuf<255> msg;
msg.Format(_L("coordinates were %S %S"), latitude, longitude);
CleanupStack::PopAndDestroy(2, latitude);
}
Pré-condição
O usuário precisa fornecer e editar uma coordenada.


(no comments yet)