Um dos serviços a implementar no projecto eHouse Aveiro é o serviço de Pontos de Interesse. Este serviço irá funcionar como um agregador de outros serviços já disponíveis, entre os quais o Sapo Mapas, Google Places, Foursquare e Gowalla. Irá também contar com uma Base de Dados que servirá de backup caso estes serviços não se encontrem disponíveis.
A descrição deste serviço já foi feita no meu post anterior, por isso irei preceder à utilização do mesmo.
Points Of Interestgo up
Visão Geralgo up
Este serviço disponibiliza uma lista de pontos de interesse de uma dada área (através da latitude, longitude e raio) para uma dada categoria (ou para todas).
O acesso a este serviço efectua-se através do seu ficheiro WSDL: http://api.web.ua.pt/dns/RequestPOIServi
As categorias disponíveis são as seguintes:
| ID | Category |
|---|---|
| 1 | Bares/Discotecas |
| 2 | Restaurantes |
| 3 | Farmácias |
| 4 | Centros Comerciais/Hypermercados |
| 5 | Hoteis/Hostels |
| 6 | Outros(Lazer) - Ginasios/Cinemas/etc |
Operaçõesgo up
Este serviço disponibiliza 2 operações que irei descrever de seguida. O resultados destas operações é uma string com o seguinte formato:
<POI>
<Name>"Nome do POI"</Name>
<Address>"Morada do POI"</Address>
<Latitude>"Latitude do POI"</Latitude>
<Longitude>"Longitude do POI"</Longitude>
<Type>"Tipo do POI"</Type>
</POI>
⇒ List getPOIByDistance(double lat, double lon, int radius)
Parâmetros
→double lat: Latitude do ponto onde queremos procurar os pontos de interesse.
→double lon: Longitude do ponto onde queremos procurar os pontos de interesse.
→int radius: Raio de abrangência da área onde queremos procurar os pontos de interesse.
Retorno
→List: Lista dos pontos de interesse encontrados.
getPOIsByTypeAndDistance
⇒ List getPOIByTypeAndDistance(double lat, double lon, int radius, int type)
Parâmetros
→double lat: Latitude do ponto onde queremos procurar os pontos de interesse.
→double lon: Longitude do ponto onde queremos procurar os pontos de interesse.
→int radius: Raio de abrangência da área onde queremos procurar os pontos de interesse.
→int type: ID da categoria de pontos de interesse que queremos procurar.
Retorno
→List: Lista dos pontos de interesse encontrados.
[Tutorial] How to use PointsOfInterest Servicego up
Para utilizar o Serviço PointsOfInterest será necessário criar uma Web Application como ilustra a figura seguinte:
Após a criação do projecto, deverá criar a classe que irá utilizar o serviço. Um exemplo simples de uma classe que utiliza este serviço encontra-se abaixo:
import java.util.List; import javax.xml.ws.WebServiceRef; public class SamplePOIServiceClient { @WebServiceRef(wsdlLocation = "http://api.web.ua.pt/dns/RequestPOIService/RequestPOI?wsdl") static RequestPOIService nameOfServiceClient = new RequestPOIService(); private static POIFacade endpointInterface; public static void main(String args[]) { endpointInterface = nameOfServiceClient.getRequestPOIPort(); // This method returns the endpoint interface /** * This method returns a list of POIs depending on your location, radius and type of POI (see types of POIs) */ List<Object> sampleClient1 = endpointInterface.getPOIByTypeAndDistance(40.658, -8.658, 5000, 1); //radius in meters /** * This method returns a list of POIs depending on your location and radius */ List<Object> sampleClient2 = endpointInterface.getPOIByDistance(40.658, -8.658, 5000); //radius in meters /** * Sample usage of POIs */ for(int i=0; i<sampleClient1.size(); i++){ System.out.println(sampleClient1.get(i).toString()); } } }
Assim que criada esta classe ela irá conter erros, pois ainda não tem a referência ao serviço. Para isso, é necessário criar um cliente do serviço. As figuras abaixo ilustram o processo:
E pronto! O cliente está criado e funcional!





