You are on page 1of 10
  • Sobre a palestra

Sobre a palestra Desenvolvendo com Java aplica çõ es e Google Web Rafael Santos Laborat

Desenvolvendo com Java aplicações e Google Web

Rafael Santos

Laboratório Instituto Associado Nacional de Computação de Pesquisas e Matemática Espaciais Aplicada

● ● Vários Todos produtividade/etc.: conhecem mecanismos o Google! de busca/ferramentas de

– – – Grupos, Agenda/calendário, Livros e artigos diretórios, acadêmicos. imagens e­mail. e blogs.

– – Picasa, Google Maps, Google Google Toolbar, Earth. etc.

Todos conhecem as interfaces básicas de acesso (WWW)...

Google? sabiam que podemos desenvolver código usando funções do

...mas

Dezembro/2006

http://www.lac.inpe.br/~rafael.santos

1

Dezembro/2006

http://www.lac.inpe.br/~rafael.santos

2

Sobre a palestra

  • Programando com a Google SOAP Search API

Sobre a palestra Desenvolvendo com Java aplica çõ es e Google Web Rafael Santos Laborat

Objetivo: Programming como linguagens Demonstrar Interfaces) de programação. algumas do Google APIs (Application usando Java/JavaScript

Exemplo de como...

– – Embutir Acessar buscas e modificar do Google o Google em Agenda. suas aplicações em Java.

Criar mapas customizados com Google Maps e JavaScript.

Exemplos com código, sem descrição de design.

Working documents code attract attracts people people who who want want to talk to code. about Design coding

-- Charles Miller.

Dezembro/2006

http://www.lac.inpe.br/~rafael.santos

3

contém aplicações (http://code.google.com/apis/soapsearch/download.html) O Google arquivo SOAP que fazem WSDL, API Developer's buscas wrappers no Google. e Kit exemplos para criação de

SOAP: (originalmente Simple Object Access Protocol) é um

WSDL: arquivos protocolo (Web XML para Services para troca descrição de Description mensagems de web Language) em services. XML usando é o formato HTTP. de

Wrappers: classes que encapsulam os web services.

O DK contém também documentação!

Dezembro/2006

http://www.lac.inpe.br/~rafael.santos

4

Parte técnica: setup

  • Parte técnica: setup

Parte t é cnica: setup Parte t é cnica: setup ● Voc ê para quem precisa

Você para quem precisa tem de conta uma conta no Gmail). no Google (quase automático

– – A Uma licença licença permite será 1000 enviada acessos para seu diários e­mail. para uso não comercial.

O código pode ser baixado de

O http://code.google.com/apis/soapsearch/ Python, que nos Perl, interessa PHP, outras é o arquivo também googleapi.jar podem ser usadas). (VB, C#,

Dezembro/2006

http://www.lac.inpe.br/~rafael.santos

5

Desenvolvendo aplicações simples com GSA

Parte t é cnica: setup Parte t é cnica: setup ● Voc ê para quem precisa

Agora é só usar a API!

1.Criar informar outras uma opções. licença, instância termos de GoogleSearch para busca, linguagens e usar métodos e codificação, set para

2.Executar GoogleSearchResult. o método doSearch para obter uma instância de

3.Obter 4.Obter GoogleSearchResultElement) resultados campos específicos individuais de (array GoogleSearchResultElement. com de método getResultElements.

Dezembro/2006

http://www.lac.inpe.br/~rafael.santos

7

● ● Ambiente Passos: recomendado: Eclipse (www.eclipse.org).

2.Adicionar 1.Criar Path, um Libraries, novo ao projeto projeto. o arquivo googleapi.jar (Properties, Java Build

Add External JAR).

Parte t é cnica: setup Parte t é cnica: setup ● Voc ê para quem precisa

Dezembro/2006

http://www.lac.inpe.br/~rafael.santos

6

Desenvolvendo aplicações simples com GSA (1)

Desenvolvendo aplica çõ es simples com GSA (1)

import import com.google.soap.search.*; java.io.*;

public class BuscaSimples

public { { static void main(String[] args)

 

GoogleSearch String try googleKey s = new = readKey(); GoogleSearch();

{

s.setQueryString("aplicações s.setKey(googleKey); científicas em Java");

 

GoogleSearchResult GoogleSearchResultElement[] for (GoogleSearchResultElement resultado elementos = s.doSearch(); elemento:elementos) = resultado.getResultElements();

System.out.println(elemento.getTitle()+": } { "+elemento.getURL());

catch { } (GoogleSearchFault f)

System.out.println("Erro } na busca:"+f.toString());

 

}

Dezembro/2006

http://www.lac.inpe.br/~rafael.santos

8

Desenvolvendo aplicações simples com GSA (1)

Desenvolvendo aplica çõ es simples com GSA (1)

private static String readKey()

String { try key = null;

BufferedReader key { = br.readLine(); br = new BufferedReader(new FileReader("google.key"));

 

br.close();

catch(IOException { } ioe)

return } } key;

}

in http://tcsc.ic.uff.br/node?page=2 http://www.universiabrasil.net/mit/curso.jsp?codcurso=30 MIT LA-Web/WebMedia LCP Latin - - Introdução Projetos: America 2004: http://www.lcp.coppe.ufrj.br/projetos.html | à Bem Solução http://www.icmc.usp.br/laweb/webmedia/shortcourses.php vindo de ao Problemas site do TCSC de Computação em América e Latina: Engenharia <b>...</b>:

 

EXEHDA: http://www.inf.ufrgs.br/~exehda/index.php?arquivo=atividades

Introdução ... Introdução À à Internet: Internet: http://mesonpi.cat.cbpf.br/verao98/Nilton.html http://mesonpi.cat.cbpf.br/escola99/II.html

Dezembro/2006

http://www.lac.inpe.br/~rafael.santos

9

Desenvolvendo aplicações simples com GSA (2)

Desenvolvendo aplica çõ es simples com GSA (2)

public { int getColumnCount()

return } colunas.length;

public { int getRowCount()

return } entradas.size();

public Object getValueAt(int rowIndex, int columnIndex)

 

if { { ((rowIndex >= 0) && (rowIndex < entradas.size()))

if ArrayList<String> return ((columnIndex entrada.get(columnIndex); >= entrada 0) && (columnIndex = entradas.get(rowIndex); < entrada.size()))

return } } null;

}

Dezembro/2006

http://www.lac.inpe.br/~rafael.santos

11

Desenvolvendo aplicações simples com GSA (2)

Desenvolvendo aplica çõ es simples com GSA (2)

import import java.util.ArrayList; javax.swing.table.AbstractTableModel;

 

public { class TabelaBuscaMelhorada extends AbstractTableModel

private private String[] ArrayList<ArrayList<String>> colunas = {"Título","URL","Contexto"}; entradas;

public { TabelaBuscaMelhorada()

entradas } super(); = new

ArrayList<ArrayList<String>>();

public { void adicionaLinha(ArrayList<String> linha)

 

entradas.add(linha); }

public { String getColumnName(int column)

 

return } colunas[column];

Dezembro/2006

http://www.lac.inpe.br/~rafael.santos

10

Desenvolvendo aplicações simples com GSA (2)

Desenvolvendo aplica çõ es simples com GSA (2)

import import java.io.*; java.util.ArrayList;

import import com.google.soap.search.*; javax.swing.*;

 

public { class BuscaMelhorada extends JFrame

private private TabelaBuscaMelhorada int numResultados; tabelaDados;

public BuscaMelhorada(String busca)

tabelaDados { = new TabelaBuscaMelhorada();

GoogleSearch String try googleKey s = new = readKey(); GoogleSearch();

{ s.setKey(googleKey); s.setQueryString(busca); s.setSafeSearch(true);

GoogleSearchResult s.setLanguageRestricts("lang_br"); numResultados GoogleSearchResultElement[] = resultado.getEstimatedTotalResultsCount(); resultado elementos = s.doSearch(); = resultado.getResultElements();

Dezembro/2006

http://www.lac.inpe.br/~rafael.santos

12

Desenvolvendo aplicações simples com GSA (2)

  • Desenvolvendo aplicações simples com GSA (2)

Desenvolvendo aplica çõ es simples com GSA (2) Desenvolvendo aplica çõ es simples com GSA (2)

for (GoogleSearchResultElement elemento:elementos)

ArrayList<String> linha.add(elemento.getTitle()); { linha = new ArrayList<String>();

linha.add(elemento.getURL());

tabelaDados.adicionaLinha(linha); } linha.add(elemento.getSnippet());

catch { } (GoogleSearchFault f)

System.out.println("Erro } na busca:"+f.toString());

Desenvolvendo aplica çõ es simples com GSA (2) Desenvolvendo aplica çõ es simples com GSA (2)

// setTitle("Busca getContentPane().add(new pack(); Começamos a montar por ["+busca+"] a GUI JScrollPane(new (aprox. "+1+" JTable(tabelaDados))); resultados)");

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); }

public { static void main(String[] args)

new } BuscaMelhorada("Google Java API");

Divertido, mas não tanto...

– – Limite Buscas para diárias: busca: 1000. 10 resultados.

Programa beta, continuará gratuito?

Potencial removidos). enorme para customização (se limites forem

Dezembro/2006

http://www.lac.inpe.br/~rafael.santos

13

Dezembro/2006

http://www.lac.inpe.br/~rafael.santos

14

Programando com a Google Data API

  • Parte técnica: setup

Desenvolvendo aplica çõ es simples com GSA (2) Desenvolvendo aplica çõ es simples com GSA (2)

para obter, (http://code.google.com/apis/gdata/index.html) A Google usar publicar, Data um protocolo API remover simples e alterar (baseado dados na em WWW. HTTP) provê para classes

Usada por serviços como Google Agenda, Blogger,

A servidor. Spreadsheets, API esconde CodeSearch, a complexidade etc. da comunicação com o

Ainda precisamos da conta no Google.

● ● Para Agenda. Precisamos os exemplos, do gdata.java.zip precisamos . de uma conta no Google

Quem tem Gmail, tem calendário/agenda

Assumimos (http://www.google.com/calendar). que existem alguns eventos já cadastrados.

Adicionamos calendar­1.0.jar ao Eclipse . os gdata­client­1.0.jar e gdata­

Dezembro/2006

http://www.lac.inpe.br/~rafael.santos

15

Dezembro/2006

http://www.lac.inpe.br/~rafael.santos

16

Parte técnica: setup

  • Parte técnica: setup

Parte t é cnica: setup Parte t é cnica: setup Dezembro/2006 http://www.lac.inpe.br/~rafael.santos 17 Dezembro/2006 http://www.lac.inpe.br/~rafael.santos 18
Dezembro/2006 http://www.lac.inpe.br/~rafael.santos 17
Dezembro/2006
http://www.lac.inpe.br/~rafael.santos
17
Dezembro/2006 http://www.lac.inpe.br/~rafael.santos 18
Dezembro/2006
http://www.lac.inpe.br/~rafael.santos
18

Parte técnica: setup

  • Desenvolvendo aplicações simples com GDA (1)

Parte t é cnica: setup Parte t é cnica: setup Dezembro/2006 http://www.lac.inpe.br/~rafael.santos 17 Dezembro/2006 http://www.lac.inpe.br/~rafael.santos 18
Dezembro/2006 http://www.lac.inpe.br/~rafael.santos 19
Dezembro/2006
http://www.lac.inpe.br/~rafael.santos
19

import import java.io.IOException; java.net.URL;

import import com.google.gdata.client.calendar.*; java.util.List;

import import import com.google.gdata.data.extensions.*; com.google.gdata.data.*; com.google.gdata.util.*;

public class LeAgenda

public { { static void main(String[] args) throws IOException

CalendarQuery consultaCalendário.setMinimumStartTime( URL new urlCalendário URL("http://www.google.com/calendar/feeds/default/private/full"); consultaCalendário = = new CalendarQuery(urlCalendário);

consultaCalendário.setMaximumStartTime( DateTime.parseDateTime("2006-12-11T00:00:00+11:00"));

CalendarService serviçoCalendário DateTime.parseDateTime("2006-12-15T23:59:59+11:00")); = new CalendarService("ExemploApp");

Dezembro/2006

http://www.lac.inpe.br/~rafael.santos

20

Desenvolvendo aplicações simples com GDA (1)

  • Desenvolvendo aplicações simples com GDA (1)

Desenvolvendo aplica çõ es simples com GDA (1) Desenvolvendo aplica çõ es simples com GDA (1)

try

Feed List<Entry> serviçoCalendário.setUserCredentials("rafaeldcsantos@gmail.com",P.senhaGmail); { resultado entradas = serviçoCalendário.query(consultaCalendário, = resultado.getEntries(); Feed.class);

for(Entry { e:entradas)

EventEntry String String título conteúdo ce = = new ce.getTitle().getPlainText(); = ""; EventEntry(e);

if (ce.getContent().getType() == Content.Type.TEXT)

TextContent conteúdo { = tc.getContent().getPlainText(); tc = (TextContent)ce.getContent();

List<When> System.out.println("Quando:"); } quando = ce.getTimes();

for(When w:quando)

DateTime { DateTime início fim = w.getEndTime(); = w.getStartTime(); início.setTzShift(-11*60); fim.setTzShift(-11*60);

System.out.println(início.toUiString()+" } a "+fim.toUiString());

if System.out.println(título); System.out.println("O { (conteúdo.length() > que:"); 0)

System.out.println(conteúdo); System.out.println("Detalhes:");

DateTime publicado.setTzShift(-11*60); } publicado = ce.getPublished();

System.out.println("Publicado System.out.println("--------------------------------------------------"); } em "+publicado.toUiString());

catch { } (AuthenticationException e)

e.printStackTrace();

catch { } (ServiceException e)

} e.printStackTrace();

}

}

Dezembro/2006

http://www.lac.inpe.br/~rafael.santos

21

Dezembro/2006

http://www.lac.inpe.br/~rafael.santos

22

Desenvolvendo aplicações simples com GDA (1)

  • Desenvolvendo aplicações simples com GDA (2)

Desenvolvendo aplica çõ es simples com GDA (1) Desenvolvendo aplica çõ es simples com GDA (1)

2006-12-12 Quando: 2006-12-11 2006-12-14 2006-12-10 2006-12-13 O que: 14:00 14:00 14:00 14:00 14:00 a a a a a 2006-12-12 2006-12-11 2006-12-14 2006-12-10 2006-12-13 15:00 15:00 15:00 15:00 15:00

Treinamento XP

Treinamento Detalhes: Publicado em em 2006-12-06 metodologia 06:41 XP (introdução)

--------------------------------------------------

2006-12-14 Quando: O que: 17:00 a 2006-12-14 18:00

Detalhes: Dentista

Lembrar Publicado de em pegar 2006-12-06 orçamento! 06:27

Desenvolvendo aplica çõ es simples com GDA (1) Desenvolvendo aplica çõ es simples com GDA (1)

--------------------------------------------------

2006-12-12 Quando: O que: 16:00 a 2006-12-12 20:00

Curso de Aplicações Científicas

Curso Publicado Detalhes: sobre em desenvolvimento 2006-12-06 06:26 de aplicações científicas

--------------------------------------------------

2006-12-10 Quando: O que: 19:00 a 2006-12-10 20:00

Palestra Java e Google

Publicado em 2006-12-06 05:59

--------------------------------------------------

import java.io.IOException;

import import import java.net.URL; com.google.gdata.client.calendar.CalendarService; com.google.gdata.data.*;

import import com.google.gdata.util.*; com.google.gdata.data.extensions.*;

public { class ModificaAgenda

public { static void main(String[] args) throws IOException

EventEntry URL urlCalendário new URL("http://www.google.com/calendar/feeds/default/private/full"); entrada = = new EventEntry();

entrada.setContent(new entrada.setTitle(new PlainTextConstruct("Curso PlainTextConstruct("Mini-curso de Java na ELAC")); escola de”+

Person entrada.getAuthors().add(autor); autor = new Person("Rafael Santos", null, verão "rafaeldcsantos@gmail.com"); do LAC"));

DateTime DateTime fim início = DateTime.parseDateTime("2007-01-30T17:15:00+11:00"); = DateTime.parseDateTime("2007-01-30T14:00:00+11:00");

When horárioEvento.setStartTime(início); horárioEvento.setEndTime(fim); horárioEvento = new When();

Dezembro/2006

http://www.lac.inpe.br/~rafael.santos

23

Dezembro/2006

http://www.lac.inpe.br/~rafael.santos

24

Desenvolvendo aplicações simples com GDA (2)

  • Desenvolvendo aplicações simples com GDA (2)

Desenvolvendo aplica çõ es simples com GDA (2) Desenvolvendo aplica çõ es simples com GDA (2)

CalendarService try entrada.addTime(horárioEvento); serviço = new CalendarService("ExemploApp");

EventEntry serviço.setUserCredentials("rafaeldcsantos@gmail.com",Personal.senhaGmail); { entradaModificada = serviço.insert(urlCalendário,entrada);

System.out.println(entradaModificada.getPublished()); System.out.println(entradaModificada.getId());

catch { } (AuthenticationException e)

e.printStackTrace();

catch { } (ServiceException e)

e.printStackTrace(); }

}

}

http://www.google.com/calendar/feeds/default/private/full/96s67icco3qtvc84gg9cdp0kcc 2006-12-06T23:06:39.000Z

Dezembro/2006

http://www.lac.inpe.br/~rafael.santos

25

Dezembro/2006 http://www.lac.inpe.br/~rafael.santos 26
Dezembro/2006
http://www.lac.inpe.br/~rafael.santos
26

Programando com a Google Maps API

  • Parte técnica: setup

Desenvolvendo aplica çõ es simples com GDA (2) Desenvolvendo aplica çõ es simples com GDA (2)

permite A Google a inclusão Maps API de (http://www.google.com/apis/maps/) mapas do Google em páginas na Web.

É site/diretório. preciso obter uma chave que será relacionada a um

É preciso ter uma conta no Google.

É necessário se registrar separadamente para obter acesso à API.

● ● Limites Interatividade bem generosos toda em JavaScript, para aplicações mas... simples!

...

podemos usar JSP/Servlets para adicionar (mais) lógica!

Ao Não Maps, registrar tem! você já para recebe: receber uma chave para uso do Google

2.A 1.A confirmação chave (uma longa da URL string para aparentemente qual a chave é aleatória), válida,

3.Um exemplo simples em HTML+JavaScript.

Testes devem ser feitos no mesmo servidor de deployment!

Dezembro/2006

http://www.lac.inpe.br/~rafael.santos

27

Dezembro/2006

http://www.lac.inpe.br/~rafael.santos

28

Desenvolvendo aplicações simples com GMA (1)

  • Desenvolvendo aplicações simples com GMA (1)

Desenvolvendo aplica çõ es simples com GMA (1) Desenvolvendo aplica çõ es simples com GMA (1)

<!DOCTYPE "http://www.w3.org/TR/html4/loose.dtd"> html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

<html>

<meta <head> <title>Exemplo http-equiv="Content-Type" com Google Maps</title> content="text/html; charset=UTF-8">

<script lVHnW5h0rxGx-M9fBBSehV83twcaz1QuVwko5BmHT1khXxTdvk1AFVxM8aXmz0epCmP2xsF3bA" src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAA4pO-

<script type="text/javascript"></script> type="text/javascript">

function load()

if { (GBrowserIsCompatible())

var { map.setCenter(new } map = new GMap2(document.getElementById("map")); GLatLng(-23.227465,-45.838394),12);

</script> }

</head> <body <h3>Mapa onload="load()" de São José onunload="GUnload()"> dos Campos</h3>

</body> <div id="map" style="width: 1040px; height: 450px"></div>

</html>

Dezembro/2006

http://www.lac.inpe.br/~rafael.santos

29

Desenvolvendo aplicações simples com GMA (2)

Desenvolvendo aplica çõ es simples com GMA (2)

<!DOCTYPE "http://www.w3.org/TR/html4/loose.dtd"> html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

 

<html>

<meta <title>Exemplo <head> http-equiv="Content-Type" com Google Maps</title> content="text/html; charset=UTF-8">

 

<script lVHnW5h0rxGx-M9fBBSehV83twcaz1QuVwko5BmHT1khXxTdvk1AFVxM8aXmz0epCmP2xsF3bA" <script type="text/javascript"></script> type="text/javascript"> src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAA4pO-

function load()

if { (GBrowserIsCompatible())

var { map.setCenter(new map.addControl(new map = new GMap2(document.getElementById("map")); GLatLng(-23.227465,-45.838394),12); GLargeMapControl());

 

map.addControl(new map.setMapType(G_SATELLITE_TYPE); GMapTypeControl());

addPoints(map);

}

}

Dezembro/2006

http://www.lac.inpe.br/~rafael.santos

31

Dezembro/2006 http://www.lac.inpe.br/~rafael.santos 30
Dezembro/2006
http://www.lac.inpe.br/~rafael.santos
30

Desenvolvendo aplicações simples com GMA (2)

Desenvolvendo aplica çõ es simples com GMA (1) Desenvolvendo aplica çõ es simples com GMA (1)

function addPoints(map)

var { icon = new GIcon();

icon.iconSize icon.shadow icon.image = = "http://www.google.com/mapfiles/marker.png"; = "http://www.google.com/mapfiles/shadow50.png"; new GSize(20, 34);

icon.shadowSize icon.iconAnchor icon.infoWindowAnchor icon.infoShadowAnchor = = new new GSize(37, GPoint(9, = = new new GPoint(9, GPoint(18, 34); 34); 2); 25);

newpoints[0] var newpoints = = new new Array(-23.207824014188837, Array(); -45.86015224456787, icon, 'INPE',

newpoints[1] = new Array(-23.19934356453084, 'Aqui fica o Instituto -45.91113567352295, Nacional de Pesquisas icon, Espaciais'); 'IBTA',

for(var { i = 0; i < newpoints.length; 'A palestra foi i++) aqui!');

var point = new GPoint(newpoints[i][1],newpoints[i][0]);

var var map.addOverlay(marker); popuphtml marker = createMarker(point,newpoints[i][2],popuphtml); = newpoints[i][4] ;

}

}

Dezembro/2006

http://www.lac.inpe.br/~rafael.santos

32

Desenvolvendo aplicações simples com GMA (2)

  • Desenvolvendo aplicações simples com GMA (2)

Desenvolvendo aplica çõ es simples com GMA (2) Desenvolvendo aplica çõ es simples com GMA (2)

function createMarker(point, icon, popuphtml)

var { var popuphtml marker = new = "<div GMarker(point, id=\"popup\">" icon); + popuphtml + "<\/div>";

GEvent.addListener(marker, { "click", function()

marker.openInfoWindowHtml(popuphtml);

return } }); marker;

</script>

</head> <body <h3>Mapa onload="load()" de São José onunload="GUnload()"> dos Campos</h3>

</body> <div id="map" style="width: 1040px; height: 450px"></div>

</html>

Ajuda inestimável de http://mapmaker.donkeymagic.co.uk/

Desenvolvendo aplica çõ es simples com GMA (2) Desenvolvendo aplica çõ es simples com GMA (2)

Dezembro/2006

http://www.lac.inpe.br/~rafael.santos

33

Desenvolvendo aplicações simples com GMA (3)

Desenvolvendo aplica çõ es simples com GMA (3)

<%@ page language="java" contentType="text/html; charset=UTF-8"

 

<!DOCTYPE "http://www.w3.org/TR/html4/loose.dtd"> pageEncoding="UTF-8"%> html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

<html>

<meta <head> http-equiv="Content-Type" content="text/html; charset=UTF-8">

 

<title>Exemplo <script lVHnW5h0rxGx-M9fBBSehV83twcaz1QuVwko5BmHT1khXxTdvk1AFVxM8aXmz0epCmP2xsF3bA" src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAA4pO- com Google Maps</title>

type="text/javascript"></script>

</head>

<script <body> <h3>Mapa <div type="text/javascript"> id="map" de São style="width: José dos Campos</h3> 1040px; height: 450px"></div>

 

var map;

map map.setCenter(new map.addControl(new = new GMap2(document.getElementById("map")); GLatLng(-23.207587357776266,-45.889549255371094),14); GLargeMapControl());

 

map.addControl(new map.setMapType(G_HYBRID_TYPE); GMapTypeControl());

Dezembro/2006

http://www.lac.inpe.br/~rafael.santos

35

Dezembro/2006

http://www.lac.inpe.br/~rafael.santos

34

Desenvolvendo aplicações simples com GMA (3)

Desenvolvendo aplica çõ es simples com GMA (3)

var var x_array.push(-23.21504183342577); x_array.push(-23.213917772458363); x_array.push(-23.20900728996491); ... x_array y_array = = new new Array(0); Array(0); y_array.push(-45.90961217880249); y_array.push(-45.908989906311035); y_array.push(-45.90989112854004);

 

...

x_array.push(-23.206778778537803); y_array.push(-45.86124658584595);

 

map.clearOverlays();

for var { (i points = 0; = i []; < x_array.length; i++)

 

var points.push(point); point = new GPoint(y_array[i], x_array[i]);

map.addOverlay(new </script> } GPolyline(points));

</body> </html>

Ajuda http://www.mappinghacks.com/projects/gmaps/ inestimável de

 

Dezembro/2006

http://www.lac.inpe.br/~rafael.santos

36

Desenvolvendo aplicações simples com GMA (3)

  • Comentários finais

Desenvolvendo aplica çõ es simples com GMA (3) Coment á rios finais Dezembro/2006 http://www.lac.inpe.br/~rafael.santos 37 Coment
Dezembro/2006 http://www.lac.inpe.br/~rafael.santos 37
Dezembro/2006
http://www.lac.inpe.br/~rafael.santos
37

Comentários finais

Desenvolvendo aplica çõ es simples com GMA (3) Coment á rios finais Dezembro/2006 http://www.lac.inpe.br/~rafael.santos 37 Coment

Futuro destas APIs

Existem possibilidades comerciais ou benefícios indiretos?

Mashing, Web 2.0: Muitas possibilidades, mas muito hype.

Possível, em serviços com externos alguma existentes. codificação, criar serviços novos baseados

– – E E descontinuadas? se a comercialização as APIs / Web Services destes serviços? usadas como base forem

De qualquer jeito, o desafio é interessante.

Alguns ferramentas serviços forem possivelmente disponibilizadas. sobreviverão melhor se mais

Dezembro/2006

http://www.lac.inpe.br/~rafael.santos

39

Algumas APIs são um tanto quanto complexas...

– – Muita Alguma confusão confusão com em formato GData e de Calendar. datas e diferença de fusos horários!

Utilidade do Google SOAP API?

Seria Google. muito útil para adicionar inteligência específica às buscas do

Com as limitações presentes, fica pouco atraente.

Maior problema: continuidade/maturação das APIs.

Dezembro/2006

http://www.lac.inpe.br/~rafael.santos

38

Comentários finais

Coment á rios finais

● ● Apresentação http://www.lac.inpe.br/~rafael.santos Mapas: (e muito mais) em

 

– – http://www.lac.inpe.br/~rafael.santos/Maps1.jsp http://www.lac.inpe.br/~rafael.santos/Maps1.html

 

http://www.lac.inpe.br/~rafael.santos/Maps2.jsp

 

Referências:

Google Calishain; Hacks O'Reilly (3 a Edição. 2006) Rael Dornfest, Paul Bausch e Tara

 

Google Maps Hacks (Rich Gibson e Schuyler Erle; O'Reilly 2006)

Perguntas?

Dezembro/2006

http://www.lac.inpe.br/~rafael.santos

40