Professional Documents
Culture Documents
Geocodificao
Geocodificao o processo de converso de endereos (como "1600 Amphitheatre Parkway, Mountain View, CA") em coordenadas geogrficas (como latitude 37.423021 e longitude -122.083739), que voc pode usar para colocar marcadores ou posicionar o mapa. A API do Google Maps fornece uma classe de geocodificador para geocodificar endereos dinamicamente a partir da entrada do usurio. Se, em vez disso, voc quiser geocodificar endereos estticos e conhecidos, consulte a documentao do Servio da web de geocodificao.
Solicitaes de geocodificao
O acesso ao servio de geocodificao assncrono, uma vez que a API do Google Maps precisa fazer uma chamada para um servidor externo. Por essa razo, voc precisa passar um mtodo de retorno de chamada a ser executado aps a concluso da solicitao. Esse mtodo de retorno de chamada processa os resultados. O geocodificador
code.google.com/intl//services.html
1/27
15/04/2011
pode retornar mais de um resultado.
Voc acessa o servio de geocodificao da API do Google Maps dentro do seu cdigo por meio do objeto google.maps.Geocoder . O mtodo Geocoder.geocode() inicia uma solicitao para o servio de geocodificao, passando um literal de objeto GeocodeRequest , que contm os termos de entrada e um mtodo de retorno de chamada a ser executado ao receber a resposta. O literal de objeto GeocodeRequest contm os seguintes campos: { address: string, latLng: LatLng, bounds: LatLngBounds, language: string, region: string, } Esses campos so explicados abaixo.
address (ob rigatrio) O endereo que deseja geocodificar.* latLng (obrigatrio*) O LatLng para o qual voc deseja obter o endereo mais prximo, legvel para
humanos.
bounds (opcional) O LatLngBounds no qual induzir os resultados de geocdigo com mais destaque.
Para obter mais informaes, consulte Polarizao da janela de visualizao, abaixo. language (opcional) O idioma para os resultados retornados.
region (opcional) O cdigo de regio, especificado como uma subtag de region de idioma IANA. Na
maioria dos casos, essas tags so convertidas diretamente nos valores usuais ccTLD ("domnio de nvel superior") de dois caracteres. Para obter mais informaes, consulte Polarizao do cdigo de regio, abaixo. * Observao: Voc pode passar um address ou latLng para pesquisa. Se voc passar um latLng , o geocodificador realizar o que conhecido como uma geocodificao reversa. Consulte Geocodificao reversa para obter mais informaes. Os parmetros bounds e region influenciaro apenas os resultados do geocodificador, sem restringi-los totalmente.
Respostas de geocodificao
O servio de geocodificao exige um mtodo de retorno de chamada a ser executado aps a recuperao dos resultados do geocodificador. Esse retorno de chamada deve passar dois parmetros para conter results e um cdigo status, nessa ordem. Como Geocoder pode retornar mais de uma entrada, o literal do objeto GeocoderResults uma matriz.
Resultados de geocodificao
O literal do objeto GeocoderResults representa um resultado individual de geocodificao e um objeto com o seguinte formato: results[]: { types[]: string, formatted_address: string, address_components[]: { short_name: string, long_name: string, types[]: string }, geometry: { location: LatLng, location_type: GeocoderLocationType viewport: LatLngBounds, bounds: LatLngBounds } } Esses campos so explicados abaixo:
types[] uma matriz que indica o tipo do resultado retornado. Essa matriz contm um conjunto de uma ou
mais tags que identificam o tipo de recurso retornado no resultado. Por exemplo, um geocdigo de "Chicago" retorna "locality", que indica que "Chicago" uma cidade, e tambm retorna "political", que indica que uma entidade poltica.
formatted_address uma string que contm o endereo legvel para humano deste local. Normalmente,
esse endereo equivalente ao "endereo postal", que algumas vezes diferente de acordo com o pas (em alguns pases, como na Gr Bretanha, a distribuio dos endereos postais verdadeiros no permitida por
code.google.com/intl//services.html
2/27
15/04/2011
restries de licena). Esse endereo normalmente composto por um ou mais componentes de endereo. Por exemplo, o endereo "111 8th Avenue, New York, NY" contm componentes de endereo separados para "111 8th Avenue" (um endereo), "New York" (a cidade) e "NY" (o estado americano). Esses componentes de endereo so observados abaixo. Para obter mais informaes sobre os tipos de endereo, consulte Tipos, abaixo.
geometry contm as seguintes informaes: location contm o valor de latitude,longitude geocodificado. Retornamos esse local como um objeto LatLng, no como uma string formatada. location_type armazena dados adicionais sobre o local especificado. Os valores a seguir so
suportados no momento:
street_address indica um endereo preciso. route indica uma rota nomeada (como "US 101"). intersection indica uma interseo principal, normalmente de duas estradas principais. political indica uma entidade poltica. Normalmente, esse tipo indica um polgono de alguma
administrao civil. country indica a entidade poltica nacional, e normalmente o tipo de ordem mais alta retornado por Geocoder. administrative_area_level_1 indica uma entidade civil de primeira ordem abaixo do nvel de pas. Nos Estados Unidos, esses nveis administrativos so estados. Nem todas as naes exibem esses nvei s administrativos. administrative_area_level_2 indica uma entidade civil de segunda ordem abaixo do nvel de pas. Nos Estados Unidos, esses nveis administrativos so municpios. Nem todas as naes exibem esses nveis administrativos. administrative_area_level_3 indica uma entidade civil de terceira ordem abaixo do nvel de pas. Esse tipo indica uma diviso civil menor. Nem todas as naes exibem esses nveis administrativos.
colloquial_area indica um nome alternativo usado comumente para a entidade. locality indica uma cidade ou entidade poltica municipal incorporada. sublocality indica uma entidade civil de primeira ordem abaixo de uma localidade. neighborhood indica um bairro nomeado. premise indica um local nomeado, normalmente um edifcio ou condomnios com um nome comum. subpremise indica uma entidade de primeira ordem abaixo de um local nomeado, normalmente um nico
edifcio dentro de um condomnio com um nome comum.
postal_code indica um cdigo postal, conforme usado para enderear correspondncias dentro do pas. natural_feature indica um recurso natural de destaque. airport indica um aeroporto. park indica um parque nomeado.
Alm dos itens acima, os componentes de endereo podem exibir os seguintes itens:
post_box indica uma caixa postal especfica. street_number indica o nmero exato da rua.
code.google.com/intl//services.html
3/27
15/04/2011
floor indica o andar de um edifcio. room indica a sala de um edifcio. Cdigos de status
google.maps.GeocoderStatus.OK indica que o geocdigo teve xito. google.maps.GeocoderStatus.ZERO_RESULTS indica que o geocdigo teve xito, mas no retornou resultados. Isso pode ocorrer se o geocdigo passou um address ou latng no existente em um local
remoto.
google.maps.GeocoderStatus.OVER_QUERY_LIMIT indica que voc ultrapassou a sua cota. google.maps.GeocoderStatus.REQUEST_DENIED indica que a sua solicitao foi negada por alguma
razo.
code.google.com/intl//services.html
4/27
15/04/2011
var map; var infowindow = new google.maps.InfoWindow(); var marker; function initialize() { geocoder = new google.maps.Geocoder(); var latlng = new google.maps.LatLng(40.730885,-73.997383); var myOptions = { zoom: 8, center: latlng, mapTypeId: google.maps.MapTypeId.ROADMAP } map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); } function codeLatLng() { var input = document.getElementById("latlng").value; var latlngStr = input.split(",",2); var lat = parseFloat(latlngStr[0]); var lng = parseFloat(latlngStr[1]); var latlng = new google.maps.LatLng(lat, lng); if (geocoder) { geocoder.geocode({'latLng': latlng}, function(results, status) { if (status == google.maps.GeocoderStatus.OK) { if (results[1]) { map.setZoom(11); marker = new google.maps.Marker({ position: latlng, map: map }); infowindow.setContent(results[1].formatted_address); infowindow.open(map, marker); } } else { alert("Geocoder failed due to: " + status); } }); } } No exemplo anterior, ns mostramos o segundo resultado (selecionando results[1] ). O geocodificador reverso normalmente retorna mais de um resultado. Os "endereos" da geocodificao no so apenas endereos postais, mas qualquer forma de nomear geograficamente uma localizao. Por exemplo, ao geocodificar um ponto na cidade de Chicago, o ponto geocodificado pode ser rotulado como um endereo, como a cidade (Chicago), como seu estado (Illinois) ou como um pas (Os Estados Unidos). Todos so endereos para o geocodificador. O geocodificador reverso retorna todos esses resultados. O geocodificador reverso compara entidades polticas (pases, provncias, cidades e bairros), endereos e cdigos postais. A lista completa de endereos retornados pela consulta anterior exibida abaixo. results[0].formatted_address: results[1].formatted_address: results[2].formatted_address: results[3].formatted_address: results[4].formatted_address: results[5].formatted_address: results[6].formatted_address: results[7].formatted_address: "275-291 Bedford Ave, Brooklyn, NY 11211, USA", "Williamsburg, NY, USA", "New York 11211, USA", "Kings, New York, USA", "Brooklyn, New York, USA", "New York, New York, USA", "New York, USA", "United States"
Os endereos so retornados na ordem de melhor a pior correspondncia. Normalmente, o endereo mais exato o resultado mais destacado, como nesse caso. Retornamos tipos diferentes de endereos, desde o mais es pecfico at as entidades polticas menos especficas, como bairros, cidades, municpios, estados etc. Se voc quiser fazer uma correspondncia de um endereo mais geral, convm inspecionar o campo results[].types. Observao: A geocodificao reversa no uma cincia exata. O geocodificador tentar encontrar o local enderevel mais prximo dentro de uma certa tolerncia. Ver exemplo (geocoding-reverse.html)
code.google.com/intl//services.html
5/27
15/04/2011
objeto GeocodeRequest para definir os limites dessa janela de visualizao. Por exemplo, um geocdigo para "Winnetka" normalmente retorna este subrbio de Chicago: { "types":["locality","political"], "formatted_address":"Winnetka, IL, USA", "address_components":[{ "long_name":"Winnetka", "short_name":"Winnetka", "types":["locality","political"] },{ "long_name":"Illinois", "short_name":"IL", "types":["administrative_area_level_1","political"] },{ "long_name":"United States", "short_name":"US", "types":["country","political"] }], "geometry":{ "location":[ -87.7417070, 42.1083080], "location_type":"APPROXIMATE" } } No entanto, especificar um parmetro bounds que define uma caixa delimitadora para San Fernando Valley de Los Angeles resulta neste geocdigo, que retorna o bairro chamado "Winnetka" nesse local: { "types":["sublocality","political"], "formatted_address":"Winnetka, California, USA", "address_components":[{ "long_name":"Winnetka", "short_name":"Winnetka", "types":["sublocality","political"] },{ "long_name":"Los Angeles", "short_name":"Los Angeles", "types":["administrative_area_level_3","political"] },{ "long_name":"Los Angeles", "short_name":"Los Angeles", "types":["administrative_area_level_2","political"] },{ "long_name":"California", "short_name":"CA", "types":["administrative_area_level_1","political"] },{ "long_name":"United States", "short_name":"US", "types":["country","political"] }], "geometry":{ "location": [34.213171,-118.571022], "location_type":"APPROXIMATE" } }
code.google.com/intl//services.html
6/27
15/04/2011
{
"types":["locality","political"], "formatted_address":"Toledo, OH, USA", "address_components":[{ "long_name":"Toledo", "short_name":"Toledo", "types":["locality","political"] },{ "long_name":"Ohio", "short_name":"OH", "types":["administrative_area_level_1","political"] },{ "long_name":"United States", "short_name":"US", "types":["country","political"] }] } Um geocdigo para "Toledo" com o campo region definido como 'es' (Espanha) retornar apenas a cidade espanhola: { "types":["locality","political"], "formatted_address":"Toledo, Espaa", "address_components":[{ "long_name":"Toledo", "short_name":"Toledo", "types":["locality","political"] },{ "long_name":"Toledo", "short_name":"TO", "types":["administrative_area_level_2","political"] },{ "long_name":"Castilla-La Mancha", "short_name":"CM", "types":["administrative_area_level_1","political"] },{ "long_name":"Espaa", "short_name":"ES", "types":["country","political"] }] }
Rotas
Observao: Com base nos comentrios dos desenvolvedores, decidimos renomear os antigos elementos "viagem" como "trajeto". Do mesmo modo, os antigos elementos "trajeto" (que se referiam a trechos de uma viagem especificada) foram renomeados como "trecho". Esperamos que voc ache esses novos nomes mais claros, mas tambm entendemos que os novos nomes podem causar alguns inconvenientes para desenvolvedores que usavam com o cdigo antigo. Os campos existentes compatveis com os antigos elem entos "viagem" e "trajeto" possuem previso de remoo e, por isso, sugerimos que voc migre o seu cdigo para usar esses campos renomeados o quanto antes. Pretendemos suspender o suporte aos nomes antigos em 1 de maio de 2010. Voc pode calcular rotas (com diferentes meios de transporte) usando o objeto DirectionsService. Esse objeto se comunica com o Servio de rotas da Google Maps API que recebe solicitaes de rota e retorna resultados calculados. Voc pode manipular esses resultados de rota manualmente ou usar o objeto DirectionsRenderer para renderizar esses resultados. As rotas podem especificar origens e destinos como strings de texto (por exemplo, "Chicago, IL" ou "Darwin, NSW, Austrlia") ou como valores de LatLng . O servio de rotas pode retornar rotas com vrias partes. Para isso, ele usa uma srie de pontos de referncia. As rotas so exibidas como uma polilinha que desenha o trajeto em um mapa ou, adicionalmente, como uma srie de descries textuais em um elemento <div> (por exemplo, "Vire direita na via de acesso Williamsburg Bridge").
Solicitaes de rota
O acesso ao servio de rotas assncrono, pois a Google Maps API precisa fazer uma chamada para um servidor externo. Por essa razo, voc precisa passar um mtodo de retorno de chamada a ser executado aps a concluso da solicitao. Esse mtodo de retorno de chamada dever processar os resultados. O servio de rotas pode retornar
code.google.com/intl//services.html
7/27
15/04/2011
mais de um itinerrio possvel como uma matriz de routes[] diferentes. Para usar rotas em V3, crie um objeto do tipo DirectionsService e chame DirectionsService.route() para iniciar uma solicitao ao servio de rotas, passando-a como um literal do objeto DirectionsRequest contendo os termos de entrada e um mtodo de retorno de chamada a ser executado no recebimento da resposta. O literal do objeto DirectionsRequest contm os seguintes campos: { origin: LatLng | String, destination: LatLng | String, travelMode: DirectionsTravelMode, unitSystem: DirectionsUnitSystem, waypoints[]: DirectionsWaypoint, optimizeWaypoints: Boolean, provideRouteAlternatives: Boolean, avoidHighways: Boolean, avoidTolls: Boolean region: String } Esses campos so explicados abaixo:
origin(obrigatrio) especifica o local inicial a partir do qual a rota deve ser calculada. Este valor pode ser especificado como uma String (por exemplo, "Chicago, IL") ou como um valor de LatLng. destination (ob rigatrio) especifica o local final para o qual a rota deve ser calculada. Este valor pode ser especificado como uma String (por exemplo, "Chicago, IL") ou como um valor de LatLng. travelMode(obrigatrio) especifica qual modo de transporte usar ao calcular a rota. Os valores esto
especificados em Modos de transporte, abaixo.
unitSystem(opcional) especifica qual sistema de medidas usar ao exibir resultados. Os valores vlidos
esto especificados em Sistemas de medidas , abaixo.
location especifica o local do ponto de referncia, como um valor de LatLng ou como uma String
que ser geocodificada. stopover um valor booliano que indica que o ponto de referncia uma parada no trajeto, o que resulta na diviso do trajeto em dois. Para obter mais informaes sobre pontos de referncia, consulte Como usar pontos de referncia em trajetos, abaixo.
optimizeWaypoints (opcional) especifica que o trajeto que est usando os waypoints fornecidos pode ser otimizado para oferecer o trajeto mais curto possvel. Se este campo for definido como true , o servio de rotas retornar os waypoints reordenados em um campo waypoint_order .Para obter mais informaes,
consulte Como usar pontos de referncia em trajetos , abaixo. provideRouteAlternatives(opcional), quando este campo definido como true, ele especifica que o servio de rotas pode fornecer mais de uma opo de trajeto na resposta. Observe que fornecer trajetos alternativos para a rota pode aumentar o tempo de resposta do servidor. avoidHighways (opcional), quando este campo definido como true, ele indica que os trajetos calculados devem evitar as principais rodovias, se possvel. avoidTolls(opcional), quando este campo definido como true , ele indica que os trajetos calculados devem evitar estradas com pedgios, se possvel.
region (opcional) especifica o cdigo de pas, apresentado como um valor ccTLD ("domnio de nvel superior")
de dois caracteres. Para obter mais informaes, consulte Polarizao de regio, abaixo. Veja a seguir um exemplo do objeto DirectionsRequest : { origin: "Chicago, IL", destination: "Los Angeles, CA", waypoints: [ { location:"Joplin, MO", stopover:false },{ location:"Oklahoma City, OK", stopover:true }], provideRouteAlternatives: false, travelMode: DirectionsTravelMode.DRIVING, unitSystem: DirectionsUnitSystem.IMPERIAL
code.google.com/intl//services.html
8/27
15/04/2011
}
Modos de transporte
Ao calcular rotas, voc precisa especificar o modo de transporte a ser usado. Atualmente, os seguintes modos de transporte so suportados:
Sistemas de medidas
Por padro, as rotas so calculadas e exibidas usando o sistema de medidas do pas ou regio de origem. Por exemplo, um trajeto de "Chicago, IL" para "Toronto, ONT" exibir resultados em milhas, enquanto o trajeto reverso exibir resultados em quilmetros. Voc pode substituir esse sistema de medidas configurando explicitamente um sistema de medidas dentro da solicitao usando um dos valores de DirectionsUnitSystem a seguir:
OK indica que a resposta contm um DirectionsResult vlido. NOT_FOUND indica que pelo menos um dos locais especificados na origem, destino ou nos pontos de
referncia da solicitao no pde ser geocodificado.
ZERO_RESULTS indica que no foi possvel encontrar nenhum trajeto entre a origem e o destino. MAX_WAYPOINTS_EXCEEDED indica que muitos DirectionsWaypoints foram fornecidos no DirectionsRequest . O mximo permitido de pontos de referncia 8, mais a origem e o destino. Para
clientes da Google Maps API Premier, so permitidos 23 pontos de referncia, mais a origem e o destino. INVALID_REQUEST indica que o DirectionsRequest fornecido era invlido.
OVER_QUERY_LIMIT indica que a pgina web enviou solicitaes em excesso dentro do perodo de tempo
permitido.
REQUEST_DENIED indica que a pgina web no tem permisso para usar o servio de rotas. UNKNOWN_ERROR indica que no foi possvel processar uma solicitao de rota devido a um erro do servidor. A
solicitao pode ser realizada corretamente se voc tentar de novo.
code.google.com/intl//services.html
9/27
15/04/2011
Voc deve garantir que a consulta de rota retorne resultados vlidos verificando esse valor antes de processar o resultado.
code.google.com/intl//services.html
10/27
15/04/2011
<option <option <option <option <option <option <option <option </select> </div>
Ver exemplo (directions-simple.html) O exemplo a seguir mostra rotas que usam diferentes modos de transporte entre Haight-Ashbury e Ocean Beach em So Francisco, CA: var var var var var directionDisplay; directionsService = new google.maps.DirectionsService(); map; haight = new google.maps.LatLng(37.7699298, -122.4469157); oceanBeach = new google.maps.LatLng(37.7683909618184, -122.51089453697205);
function initialize() { directionsDisplay = new google.maps.DirectionsRenderer(); var myOptions = { zoom: 14, mapTypeId: google.maps.MapTypeId.ROADMAP, center: haight } map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); directionsDisplay.setMap(map); } function calcRoute() { var selectedMode = document.getElementById("mode").value; var request = { origin: haight, destination: oceanBeach, // Note that Javascript allows us to access the constant // using square brackets and a string value as its // "property." travelMode: google.maps.DirectionsTravelMode[selectedMode] }; directionsService.route(request, function(response, status) { if (status == google.maps.DirectionsStatus.OK) { directionsDisplay.setDirections(response); } }); } <div> <b>Mode of Travel: </b> <select id="mode" onchange="calcRoute();"> <option value="DRIVING">Driving</option> <option value="WALKING">Walking</option> <option value="BICYCLING">Bicycling</option> </select> </div> Ver exemplo (directions-travel-modes.html) Um DirectionsRenderer no somente manipula a exibio da polilinha e dos marcadores associados, como tambm pode manipular a exibio textual de rotas na forma de uma srie de etapas. Para isso, basta chamar setPanel() no seu DirectionsRenderer, passando o <div> no qual essas informaes devem ser exibidas. Isso tambm garante a exibio das respectivas informaes de direitos autorais e de quais quer avisos que possam estar associados ao resultado. As rotas textuais sero fornecidas no idioma preferido do navegador ou no idioma especificado quando a JavaScript API foi carregada usando o parmetro language . Para obter mais informaes, consulte Localizao. O exemplo a seguir idntico ao mostrado acima, mas inclui um painel <div> no qual as rotas so exibidas: var directionDisplay; var directionsService = new google.maps.DirectionsService(); var map;
code.google.com/intl//services.html
11/27
15/04/2011
function initialize() { directionsDisplay = new google.maps.DirectionsRenderer(); var chicago = new google.maps.LatLng(41.850033, -87.6500523); var myOptions = { zoom:7, mapTypeId: google.maps.MapTypeId.ROADMAP, center: chicago } map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); directionsDisplay.setMap(map); directionsDisplay.setPanel(document.getElementById("directionsPanel")); } function calcRoute() { var start = document.getElementById("start").value; var end = document.getElementById("end").value; var request = { origin:start, destination:end, travelMode: google.maps.DirectionsTravelMode.DRIVING }; directionsService.route(request, function(response, status) { if (status == google.maps.DirectionsStatus.OK) { directionsDisplay.setDirections(response); } }); } // select UI elements omitted <div><div id="map_canvas" style="float:left;width:70%; height:100%"></div> <div id="directionsPanel" style="float:right;width:30%;height 100%"></div> Ver exemplo (directions-panel.html)
routes[] contm uma matriz de objetos DirectionsRoute. Cada trajeto indica um modo de ir da origem ao destino, fornecido no DirectionsRequest . Geralmente, apenas um trajeto retornado para qualquer solicitao especificada, a menos que o campo provideRouteAlternatives da solicitao esteja definido como true , o que permite que vrios trajetos sejam retornados. Trajetos de rotas
O antigo objeto DirectionsTrip foi renomeado como DirectionsRoute. Agora, um trajeto se refere jornada completa do incio ao fim, em vez de se referir apenas a um trecho de uma viagem pai. Um DirectionsRoute contm um nico resultado da origem e do destino especificados. Esse trajeto pode ser composto de um ou mais trechos (do tipo DirectionsLeg ), o que determinado pela especificao de pontos de referncia. Alm disso, o trajeto tambm contm informaes de direitos autorais e avisos que devem ser exibidas ao usurio juntamente com as informaes de trajeto. O DirectionsRoute um literal de objeto que contm os seguintes campos:
legs[] contm uma matriz de objetos DirectionsLeg, cada um deles contendo informaes sobre um
trecho do trajeto determinado a partir de dois locais dentro do trajeto especificado. Um trecho diferente estar presente para cada ponto de referncia ou destino especificado. Um trajeto sem pontos de referncia conter apenas um DirectionsLeg. Cada trecho composto de uma srie de DirectionSteps. waypoint_order contm uma matriz que indica a ordem dos pontos de referncia no trajeto calculado. Essa matriz pode conter uma ordem diferente se o DirectionsRequest tiver recebido optimizeWaypoints: true. overview_path consiste de uma matriz de LatLng s que representam um caminho aproximado (suavizado) das rotas resultantes.
bounds contm um LatLngBounds indicando os limites da polilinha ao longo deste trajeto especificado. copyrights contm o texto de direitos autorais a ser exibido para este trajeto. Se voc no usar o objeto DirectionsRenderer fornecido, dever manipular e exibir essas informaes manualmente. warnings[] contm uma matriz de avisos que sero exibidos quando essas rotas foram mostradas. Se voc no usar o objeto DirectionsRenderer fornecido, dever manipular e exibir esses avisos manualmente. Trechos de rotas
code.google.com/intl//services.html
12/27
15/04/2011
O antigo objeto DirectionsRoute foi renomeado como DirectionsLeg . Um trecho se refere a um trecho de um trajeto pai. Um DirectionsLeg define um nico trecho de um caminho (da origem ao destino) no trajeto calculado. Os trajetos que no contm pontos de referncia so formados por um nico "trecho", mas os trajetos que definem um ou mais pontos de referncia so formados por um ou mais trechos, que correspondem aos trechos especficos do caminho. O DirectionsLeg um literal de objeto que contm os seguintes campos:
steps[] contm uma matriz de objetos DirectionsStep com informaes sobre cada etapa especfica do
trecho do caminho.
distance indica a distncia total coberta por este trecho, como um objeto DirectionsDistance com o
seguinte formato:
value indica a distncia em metros. text contm uma string que representa a distncia, que, por padro, exibida com a mesma unidade de
medida usada na origem. Por exemplo, a unidade de distncia milha ser usada para qualquer origem dentro dos Estados Unidos. Voc pode substituir esse sistema de medidas definindo especificamente um DirectionsUnitSystem na consulta original. Independentemente do sistema de medidas usado, o campo distance.value sempre conter um valor expresso em metros. Esses campos podem ser omitidos se a distncia for desconhecida.
duration indica a durao total deste trecho, como um objeto DirectionsDuration com o seguinte
formato:
value indica a durao em segundos. text contm uma string que representa a durao.
Esses campos podem ser omitidos se a durao for desconhecida.
start_location contm a LatLng da origem deste trecho. Como o Servio da web de rotas calcula rotas
entre locais usando a opo de transporte mais prxima (geralmente uma estrada) do ponto inicial e final, o campo start_location pode ser diferente da origem fornecida para este trecho se, por exemplo, no houver uma estrada prxima da origem.
end_location contm a LatLng do destino deste trecho. Como o DirectionsService calcula rotas
entre locais usando a opo de transporte mais prxima (geralmente uma estrada) do ponto inicial e final, o campo end_location pode ser diferente do destino fornecido para este trecho se, por exemplo, no houver uma estrada prxima do destino. start_address contm o endereo legvel (geralmente uma rua) do ponto inicial deste trecho.
end_address contm o endereo legvel (geralmente uma rua) do ponto final deste trecho. Etapas de rotas
Uma DirectionsStep a menor unidade de uma rota e contm uma nica etapa que descreve uma instruo nica e especfica do caminho. (por exemplo, "Vire esquerda na Rua Augusta"). A etapa no apenas descreve a instruo, mas tambm contm informaes de distncia e durao que indicam como essa etapa est relacionada prxima etapa. Por exemplo, uma etapa indicada como "Entre na Rodovia dos Bandeirantes" pode conter uma distncia de "37 milhas" e uma durao de "40 minutos", indicando que a prxima etapa est a 37 milhas/40 minutos da etapa atual. O DirectionsStep um literal de objeto que contm os seguintes campos:
instructions contm instrues para esta etapa dentro de uma string de texto. distance contm a distncia coberta por esta etapa at a prxima etapa, como um DirectionsDistance. Consulte a descrio em DirectionsLeg, acima. Este campo pode ficar
indefinido se a distncia for desconhecida.
duration contm o tempo normalmente necessrio para realizar a etapa atual e atingir a prxima, como um objeto DirectionsDuration . Consulte a descrio em DirectionsLeg , acima. Este campo pode ficar
indefinido se a durao for desconhecida.
start_location contm a LatLng geocodificada do ponto inicial desta etapa. end_location contm a LatLng do ponto final desta etapa.
code.google.com/intl//services.html
13/27
15/04/2011
var var var var directionDisplay; directionsService; stepDisplay; markerArray = [];
function initialize() { // Instantiate a directions service. directionsService = new google.maps.DirectionsService(); // Create a map and center it on Manhattan. var manhattan = new google.maps.LatLng(40.7711329, -73.9741874); var myOptions = { zoom: 13, mapTypeId: google.maps.MapTypeId.ROADMAP, center: manhattan } map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); // Create a renderer for directions and bind it to the map. var rendererOptions = { map: map } directionsDisplay = new google.maps.DirectionsRenderer(rendererOptions) // Instantiate an info window to hold step text. stepDisplay = new google.maps.InfoWindow(); } function calcRoute() { // First, clear out any existing markerArray // from previous calculations. for (i = 0; i < markerArray.length; i++) { markerArray[i].setMap(null); } // Retrieve the start and end locations and create // a DirectionsRequest using WALKING directions. var start = document.getElementById("start").value; var end = document.getElementById("end").value; var request = { origin: start, destination: end, travelMode: google.maps.DirectionsTravelMode.WALKING }; // Route the directions and pass the response to a // function to create markers for each step. directionsService.route(request, function(response, status) { if (status == google.maps.DirectionsStatus.OK) { var warnings = document.getElementById("warnings_panel"); warnings.innerHTML = "" + response.routes[0].warnings + ""; directionsDisplay.setDirections(response); showSteps(response); } }); } function showSteps(directionResult) { // For each step, place a marker, and add the text to the marker's // info window. Also attach the marker to an array so we // can keep track of it and remove it when calculating new // routes. var myRoute = directionResult.routes[0].legs[0]; for (var i = 0; i < myRoute.steps.length; i++) { var marker = new google.maps.Marker({ position: myRoute.steps[i].start_point, map: map }); attachInstructionText(marker, myRoute.steps[i].instructions); markerArray[i] = marker; } }
code.google.com/intl//services.html
14/27
15/04/2011
function attachInstructionText(marker, text) { google.maps.event.addListener(marker, 'click', function() { stepDisplay.setContent(text); stepDisplay.open(map, marker); }); } <div> <b>Start: </b> <select id="start"> <option value="penn station, new york, ny">Penn Station</option> <option value="grand central station, new york, ny">Grand Central Station</option> <option value="625 8th Avenue New York NY 10018">Port Authority Bus Terminal</option> <option value="staten island ferry terminal, new york, ny">Staten Island Ferry Terminal</option> <option value="101 E 125th Street, New York, NY">Harlem - 125th St Station</option> </select> <b>End: </b> <select id="end" onchange="calcRoute();"> <option value="260 Broadway New York NY 10007">City Hall</option> <option value="W 49th St & 5th Ave, New York, NY 10020">Rockefeller Center</option> <option value="moma, New York, NY">MOMA</option> <option value="350 5th Ave, New York, NY, 10118">Empire State Building</option> <option value="253 West 125th Street, New York, NY">Apollo Theatre</option> <option value="1 Wall St, New York, NY">Wall St</option> </select> <div> Ver exemplo (directions-complex.html)
location (obrigatrio) especifica o endereo do ponto de referncia. stopover (opcional) indica se este ponto de referncia uma parada real no trajeto ( true) ou apenas uma preferncia por usar o local indicado ( false). Por padro, os campos stopover so definidos como true .
Por padro, o servio de Rotas calcula um trajeto que inclui os pontos de referncia fornecidos na ordem indicada. Como opo, voc pode passar optimizeWaypoints: true dentro do parmetro DirectionsRequest para permitir que o servio de Rotas otimize o trajeto fornecido reorganizando os pontos de referncia em uma ordem mais eficaz. Essa otimizao uma aplicao do Problema do caixeiro viajante. Todos os pontos de referncia devem representar pontos de parada com base nos quais o servio de Rotas ir otimizar seus trajetos. Se voc instruir o servio de Rotas a otimizar a ordem de seus pontos de referncia, a ordem ser retornada no campo optimized_waypoints_order dentro do objeto DirectionsResult. O exemplo a seguir calcula trajetos pelos Estados Unidos usando diferentes pontos iniciais, pontos finais e pontos de referncia. Para selecionar vrios pontos de referncia, mantenha a tecla Ctrl pressionada e clique nos pontos de desejados ao selecionar itens na lista. routes.start_geocode.formatted_address e routes.end_geocode.formatted_address so inspecionados para fornecer o texto para cada ponto inicial e final do trajeto. var directionDisplay; var directionsService = new google.maps.DirectionsService(); var map; function initialize() { directionsDisplay = new google.maps.DirectionsRenderer(); var chicago = new google.maps.LatLng(41.850033, -87.6500523); var myOptions = { zoom: 6, mapTypeId: google.maps.MapTypeId.ROADMAP, center: chicago } map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); directionsDisplay.setMap(map); } function calcRoute() {
code.google.com/intl//services.html
15/27
15/04/2011
var start = document.getElementById("start").value; var end = document.getElementById("end").value; var waypts = []; var checkboxArray = document.getElementById("waypoints"); for (var i = 0; i < checkboxArray.length; i++) { if (checkboxArray.options[i].selected == true) { waypts.push({ location:checkboxArray[i].value, stopover:true }); } } var request = { origin: start, destination: end, waypoints: waypts, optimizeWaypoints: true, travelMode: google.maps.DirectionsTravelMode.DRIVING }; directionsService.route(request, function(response, status) { if (status == google.maps.DirectionsStatus.OK) { directionsDisplay.setDirections(response); var route = response.routes[0]; var summaryPanel = document.getElementById("directions_panel"); summaryPanel.innerHTML = ""; // For each route, display summary information. for (var i = 0; i < route.legs.length; i++) { var routeSegment = i+1; summaryPanel.innerHTML += "<b>Route Segment: " + routeSegment + "</b><br />"; summaryPanel.innerHTML += route.legs[i].start_geocode.formatted_address + " to "; summaryPanel.innerHTML += route.legs[i].end_geocode.formatted_address + "<br />"; summaryPanel.innerHTML += route.legs[i].distance.text + "<br /><br />"; } } }); } Ver exemplo (directions-waypoints.html)
Elevao
O servio de elevao fornece dados de elevao para locais na superfcie da Terra, incluindo locais em solos ocenicos (que retornam valores negativos). Em casos como esse, para os quais o Google no possui medidas de elevao precisas para o local exato da sua solicitao, o servio intervir e retornar um valor aproximado usando os quatro locais mais prximos. O objeto ElevationService fornece uma interface simples para consultas de locais na Terra e obteno de dados de elevao. Voc tambm pode solicitar dados de elevao com base em pontos de amostragem ao longo dos caminhos e calcular mudanas na elevao equidistante dos trajetos. O objeto ElevationService se comunica com o Servio de elevao da Google Maps API que recebe solicitaes de elevao e retorna dados de elevao. Com o servio de elevao, voc pode desenvolver aplicativos de caminhada e ciclismo, aplicativos de posicionamento para celular ou aplicativos de pesquisa de opinio de baixa resoluo.
Solicitaes de elevao
O acesso ao servio de elevao assncrono, pois a Google Maps API precisa fazer uma chamada para um servidor externo. Por essa razo, voc precisa passar um mtodo de retorno de chamada a ser executado aps a concluso da solicitao. Esse mtodo de retorno de chamada dever processar os resultados. O servio de elevao retorna um cdigo de status (ElevationStatus) e uma matriz de objetos ElevationResult diferentes. O ElevationService suporta dois tipos de solicitaes: Solicitaes para locais diferentes e especficos usando o mtodo getElevationForLocations() , que recebe uma lista de um ou mais locais usando um objeto LocationElevationRequest . Solicitaes para elevao em vrios pontos conectados ao longo de um caminho usando o mtodo getElevationAlongPath() , que recebe um conjunto ordenado de vrtices de caminho dentro de um objeto PathElevationRequest . Ao solicitar elevaes ao longo de caminhos, voc tambm precisa passar um parmetro indicando quantos pontos de amostragem voc gostaria de usar ao longo do caminho. Cada um desses mtodos tambm passa um mtodo de retorno de chamada para manipular os objetos ElevationResult e ElevationStatus retornados.
code.google.com/intl//services.html
16/27
15/04/2011
Solicitaes de elevao de local
locations (obrigatrio) define os locais na Terra sobre os quais dados de elevao devero ser retornados. Es te parmetro usa uma matriz de LatLngs.
Voc pode passar qualquer nmero de coordenadas mltiplas dentro de uma matriz, contanto que no exceda as cotas do servio. Observe que ao passar coordenadas mltiplas, a preciso de algum dado retornado pode ser menor do que ao solicitar dados para uma coordenada individual.
path (obrigatrio) define um caminho na Terra sobre o qual dados de elevao devero ser retornados. O parmetro path define um conjunto de dois ou mais pares (latitude, longitude) ordenados usando uma matriz de dois ou mais objetos LatLng . samples (obrigatrio) especifica o nmero de pontos de amostragem ao longo do caminho para os quais dados de elevao devero ser retornados. O parmetro samples divide o path especificado em um conjunto
ordenado de pontos equidistantes ao longo do caminho. Assim como ocorre com as solicitaes posicionais, o parmetro path especifica um grupo de valores de latitude e longitude. No entanto, ao contrrio das solicitaes posicionais, o parmetro path especifica um conjunto ordenado de vrtices. Em vez de retornar dados de elevao nos vrtices, as solicitaes de caminho usam pontos de amostragemao longo da extenso do caminho, sendo cada ponto de amostragem equidistante do um do outro (inclusive dos pontos de extremidade).
Respostas de elevao
Para cada solicitao vlida, o servio de Elevao retornar para o retorno de chamada definido um conjunto de objetos ElevationResult juntamente com um objeto ElevationStatus.
Status de elevao
Cada solicitao de elevao retorna um cdigo de ElevationStatus dentro da sua funo de retorno de chamada. Esse cdigo de status conter um dos seguintes valores:
OK: indica que a solicitao do servio foi realizada corretamente INVALID_REQUEST : indica que a solicitao do servio estava incorreta OVER_QUERY_LIMIT: indica que o solicitante excedeu a cota REQUEST_DENIED: indica que o servio no concluiu a solicitao, provavelmente por causa de um parmetro
invlido
Resultados de elevao
Quando a operao for concluda, o argumento results da sua funo de retorno de chamada conter um conjunto de objetos ElevationResult. Esses objetos contm os seguintes elementos: Um elemento location (contendo objetos LatLng) da posio para a qual os dados de elevao esto sendo calculados. Observe que para solicitaes de caminho, o conjunto de elementos location conter os pontos de amostragem definidos ao longo do caminho. Um elemento elevation indicando a elevao do local em metros.
Exemplos de elevao
O cdigo a seguir converte um clique em um mapa em uma solicitao de elevao usando o objeto LocationElevationRequest :
code.google.com/intl//services.html
17/27
15/04/2011
var var var var
function initialize() { var myOptions = { zoom: 8, center: denali, mapTypeId: 'terrain' } map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); // Create an ElevationService elevator = new google.maps.ElevationService(); // Add a listener for the click event and call getElevation on that location google.maps.event.addListener(map, 'click', getElevation); } function getElevation(event) { var locations = []; // Retrieve the clicked location and push it on the array var clickedLocation = event.latLng; locations.push(clickedLocation); // Create a LocationElevationRequest object using the array's one value var positionalRequest = { 'locations': locations } // Initiate the location request if (elevator) { elevator.getElevationForLocations(positionalRequest, function(results, status) { if (status == google.maps.ElevationStatus.OK) { // Retrieve the first result if (results[0]) { // Open an info window indicating the elevation at the clicked position infowindow.setContent("The elevation at this point is " + results[0].elevation + " meters."); infowindow.setPosition(clickedLocation); infowindow.open(map); } else { alert("No results found"); } } else { alert("Elevation service failed due to: " + status); } }); } } Ver exemplo (elevation-simple.html) O exemplo a seguir constri uma polilinha por meio de um conjunto de coordenadas especificado e exibe dados de elevao ao longo do caminho usando a Google Visualization API. preciso carregar essa API usando o Carregador comum do Google. Uma solicitao de elevao construda usando o PathElevationRequest : var var var var var elevator; map; chart; infowindow = new google.maps.InfoWindow(); polyline;
// The following path marks a general path from Mt. // Whitney, the highest point in the continental United // States to Badwater, Death Vallet, the lowest point. var whitney = new google.maps.LatLng(36.578581, -118.291994); var lonepine = new google.maps.LatLng(36.606111, -118.062778); var owenslake = new google.maps.LatLng(36.433269, -117.950916);
code.google.com/intl//services.html
18/27
15/04/2011
var beattyjunction = new google.maps.LatLng(36.588056, -116.943056); var panamintsprings = new google.maps.LatLng(36.339722, -117.467778); var badwater = new google.maps.LatLng(36.23998, -116.83171); // Load the Visualization API and the columnchart package. google.load("visualization", "1", {packages: ["columnchart"]}); function initialize() { var myOptions = { zoom: 8, center: lonepine, mapTypeId: 'terrain' } map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); // Create an ElevationService. elevator = new google.maps.ElevationService(); // Draw the path, using the Visualization API and the Elevation service. drawPath(); } function drawPath() { // Create a new chart in the elevation_chart DIV. chart = new google.visualization.ColumnChart(document.getElementById('elevation_chart')); var path = [ whitney, lonepine, owenslake, panamintsprings, beattyjunction, badwater]; // Create a PathElevationRequest object using this array. // Ask for 256 samples along that path. var pathRequest = { 'path': path, 'samples': 256 } // Initiate the path request. if (elevator) { elevator.getElevationAlongPath(pathRequest, plotElevation); } } // Takes an array of ElevationResult objects, draws the path on the map // and plots the elevation profile on a Visualization API ColumnChart. function plotElevation(results, status) { if (status == google.maps.ElevationStatus.OK) { elevations = results; // Extract the elevation samples from the returned results // and store them in an array of LatLngs. var elevationPath = []; for (var i = 0; i < results.length; i++) { elevationPath.push(elevations[i].location); } // Display a polyline of the elevation path. var pathOptions = { path: elevationPath, strokeColor: '#0000CC', opacity: 0.4, map: map } polyline = new google.maps.Polyline(pathOptions); // Extract the data from which to populate the chart. // Because the samples are equidistant, the 'Sample' // column here does double duty as distance along the // X axis. var data = new google.visualization.DataTable(); data.addColumn('string', 'Sample'); data.addColumn('number', 'Elevation'); for (var i = 0; i < results.length; i++) { data.addRow(['', elevations[i].elevation]); }
code.google.com/intl//services.html
19/27
15/04/2011
// Draw the chart using the data within its DIV. document.getElementById('elevation_chart').style.display = 'block'; chart.draw(data, { width: 640, height: 200, legend: 'none', titleY: 'Elevation (m)' }); } } Ver exemplo (elevation-paths.html)
Street View
O Street View do Google proporciona visualizaes panormicas de 360 graus de ruas designadas em toda sua rea de cobertura. A cobertura da Street View API a mesma do aplicativo Google Maps (http://maps.google.com/ ). A lista de cidades atualmente suportadas para o Street View est disponvel na Central de Ajuda do Google Maps . Veja abaixo um exemplo de imagem do Street View.
A Google Maps JavaScript API agora fornece o servio Street View para obteno e manipulao de imagens usadas no recurso Street View do Google Maps. Diferentemente da API V2, o servio Street View na Google Maps JavaScript API V3 suportado de modo nativo dentro do navegador.
code.google.com/intl//services.html
20/27
15/04/2011
Arraste o marcador do Pegman para uma rua e o mapa ser atualizado para exibir um panorama do Street View do local indicado. O exemplo a seguir adiciona um streetViewControl a um mapa de Boston, na regio prxima ao Fenway Park: var fenway = new google.maps.LatLng(42.345573,-71.098326); var mapOptions = { center: fenway, zoom: 14, mapTypeId: google.maps.MapTypeId.ROADMAP, streetViewControl: true }; var map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); Ver exemplo (streetview-map.html)
code.google.com/intl//services.html
21/27
15/04/2011
O local do Street View define o local de posicionamento da cmera para uma imagem, mas no define a orientao da cmera em relao a essa imagem. Para definir a orientao da cmera, o objeto StreetViewPov define trs propriedades:
heading (padro 0) define o ngulo de rotao (em graus) em torno do local da cmera em relao ao norte
absoluto. A direo medida no sentido horrio (90 graus indica o leste absoluto). pitch (padro 0) define a variao "para cima" ou "para baixo" do ngulo em relao inclinao inicial padro da cmera. Frequentemente, mas no sempre, a inclinao plana e horizontal. Por exemplo, um a imagem feita em uma colina provavelmente exibir uma inclinao padro que no horizontal. Os ngulos de inclinao so medidos com valores negativos apontando para cima (at chegar em -90 graus e ortogonalmente em relao inclinao padro) e valores positivos apontando para baixo (at chegar em +90 graus e ortogonalmente em relao inclinao padro). zoom (padro 1) define o nvel de zoom da visualizao (indicando efetivamente o "campo de viso"), com o valor 0 indicando a total diminuio do zoom. A maioria dos locais do Street View suportam nveis de 0 a 3 (valores inclusivos). O cdigo a seguir mostra um mapa de Boston com uma visualizao inicial do Fenway Park. Se voc selecionar e arrastar o Pegman para um local suportado no mapa, alterar o panorama do Street View: var fenway = new google.maps.LatLng(42.345573,-71.098326); var mapOptions = { center: fenway, zoom: 14, mapTypeId: google.maps.MapTypeId.ROADMAP, streetViewControl: true }; var map = new google.maps.Map( document.getElementById("map_canvas"), mapOptions); var panoramaOptions = { position: fenway, pov: { heading: 34, pitch: 10, zoom: 1 } }; var panorama = new google.maps.StreetViewPanorama(document.getElementById("pano"), panoramaOptions); map.setStreetView(panorama); Ver exemplo (streetview-simple.html)
function initialize() {
code.google.com/intl//services.html
22/27
15/04/2011
// Set up the map var mapOptions = { center: astorPlace, zoom: 18, mapTypeId: google.maps.MapTypeId.ROADMAP, streetViewControl: true }; map = new google.maps.Map(document.getElementById('map_canvas'), mapOptions); // Setup the markers on the map var cafeMarkerImage = new google.maps.MarkerImage('http://chart.apis.google.com/chart? chst=d_map_pin_icon&chld=cafe|FFFF00'); var cafeMarker = new google.maps.Marker({ position: cafe, map: map, icon: cafeMarkerImage, title: 'Cafe' }); var bankMarkerImage = new google.maps.MarkerImage('http://chart.apis.google.com/chart? chst=d_map_pin_icon&chld=dollar|FFFF00'); var bankMarker = new google.maps.Marker({ position: bank, map: map, icon: bankMarkerImage, title: 'Bank' }); var busMarkerImage = new google.maps.MarkerImage('http://chart.apis.google.com/chart? chst=d_map_pin_icon&chld=bus|FFFF00'); var busMarker = new google.maps.Marker({ position: busStop, map: map, icon: busMarkerImage, title: 'Bus Stop' }); // We get the map's default panorama and set up some defaults. // Note that we don't yet set it visible. panorama = map.getStreetView(); panorama.setPosition(astorPlace); panorama.setPov({ heading: 265, zoom:1, pitch:0} ); } function toggleStreetView() { var toggle = panorama.getVisible(); if (toggle == false) { panorama.setVisible(true); } else { panorama.setVisible(false); } } Ver exemplo (streetview-overlays.html)
pano_changed disparado sempre que o ID de um panorama individual alterado. Este evento no garante
que algum dado dentro do panorama (como os links) tambm tenha sido alterado no momento em que o evento foi disparado. Este evento indica apenas que o ID de um panorama foi alterado. O ID do panorama (que voc pode usar para referenciar esse panorama) estvel apenas dentro da sesso atual do navegador. position_changed disparado sempre que a posio subjacente ( LatLng) do panorama alterada. A rotao de um panorama no disparar este evento. Voc pode alterar uma posio subjacente do panorama sem alterar o ID do panorama, pois a API associar automaticamente o ID do panorama mais prximo
code.google.com/intl//services.html
23/27
15/04/2011
posio do panorama. pov_changed disparado sempre que o StreetViewPov do Street View alterado. Este evento pode ser disparado enquanto a posio e o ID do panorama permanecem estveis. links_changed disparado sempre que os links do Street View so alterados. Este evento pode ser disparado de modo assncrono aps uma alterao no ID do panorama indicada pelo pano_changed .
visible_changed disparado sempre que a visibilidade do Street View alterada. Este evento pode ser disparado de modo assncrono aps uma alterao no ID do panorama indicada pelo pano_changed .
O cdigo a seguir ilustra como esses eventos podem ser manipulados para coletar dados sobre o StreetViewPanorama subjacente: var caffe = new google.maps.LatLng(37.869085,-122.254775); function initialize() { var panoramaOptions = { position:caffe, pov: { heading: 270, pitch:0, zoom:1 }, visible:true }; var panorama = new google.maps.StreetViewPanorama(document.getElementById("pano"), panoramaOptions); google.maps.event.addListener(panorama, 'pano_changed', function() { var panoCell = document.getElementById('pano_cell'); panoCell.firstChild.nodeValue = panorama.getPano(); }); google.maps.event.addListener(panorama, 'links_changed', function() { var linksTable = document.getElementById('links_table'); while(linksTable.hasChildNodes()) { linksTable.removeChild(linksTable.lastChild); }; var links = panorama.getLinks(); for (var i in links) { var row = document.createElement("tr"); linksTable.appendChild(row); var hCell = document.createElement("td"); var hText = "Link: " + i + ""; hCell.innerHTML = hText; var vCell = document.createElement("td"); var vText = links[i].description; vCell.innerHTML = vText; linksTable.appendChild(hCell); linksTable.appendChild(vCell); } }); google.maps.event.addListener(panorama, 'position_changed', function() { var positionCell = document.getElementById('position_cell'); positionCell.firstChild.nodeValue = panorama.getPosition(); }); google.maps.event.addListener(panorama, 'pov_changed', function() { var headingCell = document.getElementById('heading_cell'); var pitchCell = document.getElementById('pitch_cell'); headingCell.firstChild.nodeValue = panorama.getPov().heading; pitchCell.firstChild.nodeValue = panorama.getPov().pitch; }); } Ver exemplo (streetview-events.html)
code.google.com/intl//services.html
24/27
15/04/2011
Um navigationControl fornece um modo de girar o panorama e aplicar zoom na imagem. Por padro, este controle aparece como um controle padro integrado de bssola, deslocamento e zoom. possvel alterar a aparncia do controle fornecendo NavigationControlOptions dentro do campo navigationControlOptions. Um addressControl fornece uma superposio textual que indica o endereo do local associado. possvel alterar a aparncia do controle fornecendo StreetViewAddressControlOptions dentro do campo addressControlOptions. Um linksControl fornece setas de orientao na imagem que permitem acessar imagens do panorama adjacente. O exemplo a seguir altera os controles exibidos no Street View associado e remove os links da visualizao: var fenway = new google.maps.LatLng(42.345573,-71.098326); // Note: constructed panorama objects have visible: true // set by default. var panoOptions = { position: fenway, addressControlOptions: { position: google.maps.ControlPosition.BOTTOM, style: { "fontWeight" : "bold", "backgroundColor" : "#191970", "color" :"#A9203E" } }, linksControl: false, navigationControlOptions: { style: google.maps.NavigationControlStyle.SMALL }, enableCloseButton: false, visible:true }; var panorama = new google.maps.StreetViewPanorama( document.getElementById("pano"), panoOptions); Ver exemplo (streetview-controls.html)
getPanoramaById() retorna dados do panorama por meio de um ID de referncia fornecido que identifica
exclusivamente o panorama. Esses IDs de referncia so estveis apenas dentro da sesso atual do navegador. getPanoramaByLocation() pesquisa dados do panorama em uma rea especificada, com base em um LatLng passado e no raio (em metros) no qual a pesquisa deve ser feita. Se o raio for de 50 metros ou menos, o panorama retornado ser o mais prximo do local especificado.
code.google.com/intl//services.html
25/27
15/04/2011
"location": { "latLng": LatLng, "description": string, "pano": string }, "copyright": string, "links": [{ "heading": number, "description": string, "pano": string, "roadColor": string, "roadOpacity": number }], "tiles": { "worldSize": Size, "tileSize": Size, "originHeading": number } }
Este objeto de dados no propriamente um objeto StreetViewPanorama . Para criar um objeto Street View usando esses dados, voc ter que criar um StreetViewPanorama e chamar setPano() , passando o ID fornecido no campo location.pano retornado. O cdigo status pode retornar um dos seguintes valores:
OK indica que o servio encontrou um panorama correspondente. ZERO_RESULTS indica que o servio no conseguiu encontrar um panorama que corresponde aos critrios
passados.
UNKNOWN_ERROR indica que uma solicitao do Street View no pde ser processada, embora o motivo exato
seja desconhecido. O cdigo a seguir cria um StreetViewService que responde aos cliques dos usurios em um mapa criando marcadores que, ao serem clicados, exibem um StreetViewPanorama desse local. O cdigo usa o contedo de StreetViewPanoramaData retornado pelo servio. var map; var berkeley = new google.maps.LatLng(37.869085,-122.254775); var sv = new google.maps.StreetViewService(); var panorama; function initialize() { panorama = new google.maps.StreetViewPanorama(document.getElementById("pano")); // Set up the map var mapOptions = { center: berkeley, zoom: 16, mapTypeId: google.maps.MapTypeId.ROADMAP, streetViewControl: false }; map = new google.maps.Map(document.getElementById('map_canvas'), mapOptions); // getPanoramaByLocation will return the nearest pano when the // given radius is 50 meters or less. google.maps.event.addListener(map, 'click', function(event) { sv.getNearestPanorama(event.latLng, 50, processSVData); }); } function processSVData(data, status) { if (status == google.maps.StreetViewStatus.OK) { var marker = new google.maps.Marker({ position: data.location.latLng, map: map, title: data.location.description }); google.maps.event.addListener(marker, 'click', function() { var markerPanoID = data.location.pano; // Set the Pano to use the passed panoID
code.google.com/intl//services.html
26/27
15/04/2011
panorama.setPano(markerPanoID); panorama.setPov({ heading: 270, pitch: 0, zoom: 1 }); panorama.setVisible(true); }); } } Ver exemplo (streetview-service.html)
2010 Google - Pgina inicial do Google Code - Termos de servio do site - Poltica de Privacidade - Diretrio do site O Google Code oferecido em: English - Espaol - - - Portugus - P - () - ()
code.google.com/intl//services.html
27/27