HOME BLOG
 

MAPAS API

Classe SAPO.Maps.Search

As instâncias desta classe pesquisam por locais, apresentando automaticamente os resultados sobre o mapa e as suas descrições num painel (caso estes sejam fornecidos).
Cada instância desta classe tem associado um estado, fornecido pelo enumerado SAPO.Maps.Request.Status. A evolução entre os diferentes estados obedece ao fluxograma apresentado em SAPO.Maps.Request.Status. O objecto inicia-se no estado de STOP. No momento do pedido ao servidor este fica REQUESTING e daí podem resultar três estados possíveis, OK, em caso de sucesso, ERROR, em caso de timeout, ou CANCELED, no caso do pedido ter sido cancelado pelo utilizador.
Note-se que apenas pode haver pesquisa em cada momento. Se pretender efectuar uma nova pesquisa, deverá cancelar a anterior se ainda se encontrar em curso.

 
Construtor
Construtor Descrição

SAPO.Maps.Search(map?:SAPO.Maps.Map, panel?:DOM Element, options?:Object)

Cria uma nova instância de SAPO.Maps.Search. Os marcadores a indicar os resultados serão apresentados em map e a descrição de cada resultado será apresentada em panel (caso estes parâmetros sejam fornecidos). options é um objecto com as seguintes chaves:

  • borders:Object: Indica sobre o portview a área disponível para abrir o popup. Este objecto tem as seguintes chaves:
    • left:Integer: Especifica a margem esquerda.
    • top:Integer: Especifica a margem superior.
    • right:Integer: Especifica a margem direita.
    • bottom:Integer: Especifica a margem inferior.
  • numberOfPagesShown:Integer: Número de páginas a apresentar no painel de paginação.
Métodos
Método Retorno Descrição

search(query:String, options?:Object)

void

Inicia um novo pedido de pesquisa pelo texto passado em query. As opções de pesquisa são especificadas no objecto options que tem as seguintes chaves:

  • resultsPerPage:Integer: O número máximo de resultados a obter.
  • bbox:OpenLayers.Bounds: A bounding box onde deve ser feita a pesquisa.
  • allowPaging:Boolean: Indica se é pretendido obter os resultados paginados.
  • searchForPOIS:Boolean: Valor booleano que indica se a pesquisa é apenas por POIS.
  • categorizedSearch:Boolean: Indica se os resultados da pesquisa devem ser apresentados de forma categorizada. (desde v1.1)

Para que um novo pedido seja iniciado, o pedido pendente (caso exista) tem que ser cancelado, usando o método cancel().  Se for iniciado um novo pedido com a pesquisa anterior ainda em curso, este método lança uma excepção.

Este método, após a sua execução, poderá disparar os seguintes eventos:

  • timeout: O serviço não respondeu em tempo útil. O estado do objecto passa a ERROR.
  • completed: foram obtidos os resultados com sucesso. O estado passa para OK.
  • error: Ocorreu um erro no processamento da resposta.

getStatus()

SAPO.Maps.Request.Status

Devolve o estado do pedido. Os valores possíveis são:

  • STOP: Não existe nenhum pedido em curso. Este é o estado inicial.
  • OK: O último pedido foi concluído com sucesso.
  • ERROR: Ocorreu um erro com o último pedido.
  • REQUESTING: Encontra-se um pedido em curso.
  • CANCELED: O pedido que estava em curso foi cancelado.

getPOIS(zoneName:String)

Array<SAPO.Maps.Poi>

Retorna todos os resultados sob a forma de POIs. Se o resultado ainda não estiver disponível é devolvido null. Caso se trate de uma pesquisa categorizada, zoneName indica a zona de qual se querem obter os POIs.(desde v1.1)

clear()

void

Limpa os marcadores de resultados do mapa, bem como a sua descrição (se tiver sido fornecido um mapa e um painel no construtor). Caso este método seja chamado enquanto um pedido está em curso, é lançada uma excepção pelo que esse pedido em curso deve ser cancelado através do método cancel.

selectResult(idx:Integer, zoneName?:String)

void

Para evocar este método os resultados devem estar disponíveis (status = OK). Este método selecciona o resultado com índice igual a idx. Dispara também o evento selected. Caso se trate de uma pesquisa categorizada, zoneName é o nome da zona a que corresponde idx.(desde v1.1)

unselectResult(idx:Integer)

void

Para evocar este método os resultados devem estar disponíveis (status = OK). Desselecciona o resultado com índice igual a idx. Se idx não corresponder a um índice seleccionado, nada acontece. Dispara também o evento unselected.

getMarker(idx:Integer)

SAPO.Maps.Marker

Para evocar este método os resultados devem estar disponíveis (status = OK). Retorna o marcador associado ao resultado com índice idx.

getMarkers()

Array<SAPO.Maps.Marker>

Para evocar este método os resultados devem estar disponíveis (status = OK). Devolve o conjunto de marcadores associados aos resultados.

cancel()

void

Cancela o pedido que está em curso (se existir). A chamada a este método dispara o evento canceled e coloca o estado do objecto em CANCELED.

getCurrentPage(zoneName:String)

Integer

Devolve o número da página corrente. Caso se trate de uma pesquisa categorizada, zoneName indica o nome da zona da qual se pretende obter o número da página corrente.(desde v1.1)

getSelectedIndex()

Integer

Devolve o índice do elemento seleccionado.

goToPage(page:Integer)

void

Se a paginação estiver activa, este método coloca os resultados na página pedida.

getTotalResults()

Integer

Devolve o número total de resultados.

openZone(zoneName:String)

void

Caso se trate de uma pesquisa categorizada e caso tenha sido fornecido um painel, abre a zona de nome zoneName(desde v1.1).

closeZone()

void

Caso se trate de uma pesquisa categorizada, fecha a zona aberta.(desde v1.1)

getNrZones()

Integer

Caso se trate de uma pesquisa categorizada, devolve o número de zonas existentes.(desde v1.1)

registerEvent(eventType:SAPO.Maps.Search.EVENT_TYPES, context:Object, func:Function)

void

Regista a função func como listener do evento do tipo eventType. O callback func será chamado com o contexto context.

unRegisterEvent(eventType:SAPO.Maps.Search.EVENT_TYPES, context:Object, func:Function)

Boolean

Remove func como listener de eventos do tipo eventType. Retorna true ou false conforme o sucesso da operação.

Eventos
Evento Descrição

completed(search:SAPO.Maps.Search)

Disparado quando um pedido e o seu processamento são concluídos com sucesso.

error(search:SAPO.Maps.Search)

Disparado quando ocorre um erro no processamento do pedido.

timeout(search:SAPO.Maps.Search)

Disparado quando não há resposta ao pedido.

selected(search:SAPO.Maps.Search, poi:SAPO.Maps.Poi, idx:Integer)

Disparado quando um resultado é seleccionado.

unselected(search:SAPO.Maps.Search, poi:SAPO.Maps.Poi, idx:Integer)

Disparado quando um resultado é desseleccionado.

cleanResults(search:SAPO.Maps.Search)

Disparado quando os resultados são limpos do mapa e do painel.

canceled(search:SAPO.Maps.Search)

Disparado quando um pedido é cancelado.

pageChanged(search:SAPO.Maps.Search, page:Integer)

Disparado quando a página é alterada.