×
Namespaces

Variants
Actions

Como armazenar Geo Coordenadas numa Tag NFC

From Nokia Developer Wiki
Jump to: navigation, search

Este artigo mostra como armazenar geo coordenadas de um lugar (longitude e latitude), como se levasse de um GPS numa Tag NFC.

WP Metro Icon NFC.png
WP Metro Icon WP8.png
SignpostIcon WP7 70px.png
Article Metadata

Compatibilidade
Artigo
Tradução:
Por cronius
Última alteração feita por hamishwillee em 26 Jul 2013

Contents

Introdução

Você já esteve numa situação em que lia sobre uma paisagem, cidade ou um país, e queria saber onde é? Se a brochura inclui uma tag NFC que armazena geo informações, você só precisa tocá-lo com o seu telemóvel e instantaneamente vê a localização na aplicação de mapas. Outros casos de uso incluem geocaching ou um jogo de caça ao tesouro, onde você pode armazenar as coordenadas finais numa tag, que só são revelados tocando o tag com o telemóvel.

Para habilitar esses casos de uso, a tag deve conter as coordenadas do lugar: longitude e latitude, como se você levaria de um GPS. Este artigo dá uma olhada em alternativas para as armazenar, para permitir a utilização em multiplataformas. Grande parte destas invenções também são relevantes para simples links URL na web ou códigos de barras 2D, e não precisa de estar numa tag NFC.


Representando Geo Coordenadas

Infelizmente, nenhum formato para armazenar coordenadas foi padronizado pelo Fórum NFC até agora. O NDEF URI RTD contém vários tipos de URI comuns (como obviamente http:, bem como tel: ou sip:), mas nenhuma recomendação especial para as geo coordenadas. Portanto, algumas plataformas podem não ser capazes de lidar muito bem com os links com geo coordenadas, ou as aplicações padrão podem estar a espera de diferentes esquemas URI. Actualmente não é possível criar um único Geo Tag que trabalhe directamente com todas as plataformas.Como consequência, você tem a escolha para usar:

  • Esquemas de URI especiais
  • Links para um cliente de mapas baseado em web
  • Script de redireccionamento que determina o sistema operativo do cliente

Esquemas URI

Esquemas URI diferentes (também habitualmente chamada de esquemas de URL) estão em uso para as geo coordenadas. Qual é o melhor depende do sistema operativo de seus clientes. Para cada esquema de URI, esta secção contém uma breve visão geral da norma, um exemplo que codifica as coordenadas decimal com a latitude e longitude de 60,17 e 24,829 respectivamente em WSG-84, bem como que as plataformas têm suporte embutido para compreender e lidar com um URL que é formatado pela esquema (= sem ter que baixar um aplicação de terceiros da loja).

Geo: Esquema URI

A geo: esquema URI (RFC 5870) propõe uma maneira fácil de codificar latitude e longitude num URI. O esquema em si também pode codificar mais informações no URI, mas para mostrar um lugar no mapa e, especialmente, quando se considera o espaço gravável geralmente muito limitado sobre a tag típica NFC, você ficará contente por ter longitude, latitude e o título do sítio escrito (por meio de um registo Smart Poster).

Formato:

geo:{0},{1}
{0} … latitude, {1} … longitude

Exemplo:
geo:60.17,24.829

Plataforma com suporte nativo:

  • MeeGo
  • Android

O cliente de mapas no Windows (Phone) 8 não se subscreve para este esquema URI. Pode, claro, escrever um cliente de mapas próprio que o faz, mas isso exigiria que o utilizador baixe uma aplicação extra da loja do Windows.

Esquemas URI do Bing Maps

Win8-Maps.png
Utilizado pelo cliente de Mapas padrão do Windows 8. Quando o utilizador encontra um tal URL, irá abrir o cliente de mapas e mostrar o mapa na posição especificada. A imagem à direita mostra a aparência do prompt, se o Internet Explorer do Windows 8 encontrar um tal link. Mais informações sobre o esquema de URI e como usá-lo a partir de uma aplicação em C# foi colocado no blog pela equipa “dream team”.

Formato:

bingmaps://?cp={0}~{1}
{0} … latitude, {1} … longitude

Exemplo:
bingmaps://?cp=60.17~24.829

Plataformas com suporte nativo:

  • Windows 8

Esquemas URI dos Mapas

Utilizado pelo cliente Bing Maps no Windows Phone 7. Obviamente, os dispositivos WP7 geralmente não têm suporte NFC, mas você pode usar este esquema de URI para links na web, ou o script de redireccionamento.

Este esquema também está conectado ao Bing Maps no WP8 - no entanto, a aplicação começa a procurar as coordenadas, mas depois desiste e NÃO centraliza o mapa em coordenadas especificadas! Você pode, no entanto, usar o sistema para procurar um nome de algum sítio.

Note que este esquema também lança o Bing Maps nos telemóveis Nokia Lumia WP8, onde Bing Maps não é visível, uma vez que foi substituído pelo Nokia Maps - no entanto, Bing Maps ainda está presente no telefone e pode ser iniciado através deste esquema.

Formato:

maps:{0} {1}
{0} … latitude, {1} … longitude

Exemplo:
maps:60.17 24.829

Plataformas com suporte nativo:

  • Windows Phone 7.x / (8.x: não trabalha com coordenadas, sempre lança Bing Maps)

Esquemas URI de navegação

Microsoft definiu esquemas URI adicionais que funcionam apenas no Windows Phone 8 e disparam imediatamente o começo da navegação usando as aplicações de base do cliente.

Estes esquemas só definem o destino da navegação, mas não o de origem para especificar uma rota completa; o ponto de partida para a navegação é sempre a actual posição GPS do utilizador.

Uma limitação grave é que os esquemas mostram apenas o alvo se o cliente é de facto capaz de calcular uma rota. Por exemplo, se você está na Áustria e quer abrir o link para navegar para a Austrália, o cálculo da rota no aplicativo Mapas irá falhar, e que o utilizador não vai ver realmente a posição de destino.

O sistema também pode ser usado em cenários app-to-app (aplicação para aplicação), por exemplo, para iniciar uma tarefa de navegação dentro da sua própria aplicação WP8.

Formato:

ms-drive-to:?destination.latitude={0}&destination.longitude={1}
ms-walk-to:?destination.latitude={0}&destination.longitude={1}
{0} … latitude, {1} … longitude

Exemplo:
ms-drive-to:?destination.latitude=60.17&destination.longitude=24.829
ms-walk-to:?destination.latitude=60.17&destination.longitude=24.829

Plataformas com suporte nativo:

  • Windows Phone 8.x

Linsk apra Mapas de Cliente do tipo Web

Se um cliente não suporta um esquema de URI ou não tem uma aplicação de mapas pré instalada que você poderia abrir directamente, você pode vincular a um web site de mapas, como o Nokia Maps, Bing Maps, Open Street Maps ou Google Mapas. A web site de mapas deve, então, detectar automaticamente a versão do cliente e optimizar a sua experiência do utilizador. Por exemplo, o Nokia Maps fornece ao cliente mapas desktop completo se o link é aberto a partir de um PC, ou a versão HTML5 móvel se abriu a partir de Android ou um iPhone.

Aqui, vamos dar uma olhada no Nokia Maps. Pode, claro, criar links semelhantes para outros fornecedores de mapas.

Formato:

http://m.nokia.me/?c={0},{1}
{0} … latitude, {1} … longitude

Example:
http://m.nokia.me/?c=60.17,24.829


Note.pngNote: Como uma nota especial: se você usar o "velho" URL m.ovi.me em vez de m.nokia.me, este tem a vantagem adicional de que os telemóveis Symbian reconhecem o URL e ainda abrem o cliente completo de mapas nativos. No entanto, nalgumas plataformas, isso só pode fornecer uma imagem de mapa estático, e portanto, não ser a melhor experiência do utilizador.

Script de redireccionamento WEB

Para criar um verdadeira multiplataforma Geo Tag (ou um link numa página web), que fornece a melhor experiência de utilizador em qualquer plataforma, você precisa de criar um script web especial que determina o sistema operativo do cliente, e depois redirecciona para a melhor esquema de URI ou cliente baseado na web para essa plataforma particular. A desvantagem é claro que o navegador vai sempre (pelo menos momentaneamente) abrir no dispositivo do utilizador; mas, dada a vantagem de dar a melhor experiência de utilizador, este trade-off vale a pena considerar.

Para criar um redireccionamento que funcione, é preciso determinar dois factores, dependendo da plataforma:

  • URI de redireccionamento: Ou um esquema URI, ou um link para um cliente de mapas baseado em web.
  • Método de redireccionamento: Ou através do envio do navegador de um cabeçalho que aponta directamente para o local, ou através de redireccionamento de JavaScript.

Por exemplo, se você descobrir que o agente utilizador do navegador indica o Windows 8 como sistema operativo do cliente, você formataria o local para conter o carácter ~ como separador entre latitude e longitude, e usar o redireccionamento de JavaScript. Encontre o código completo na seção de download abaixo, o princípio funciona da seguinte forma:

<?php
// Latitude e longitude - você também pode isto dos parâmetros de inquisição
$location = "60.17,24.829";
$latlong = str_split($location, ",");
 
// Determinar a string do agente utilizador
$user_agent = $_SERVER['HTTP_USER_AGENT'];
 
// Verifica a plataforma do cliente
if (preg_match('/WPDesktop/i',$user_agent)) {
$ua_enc = 'wp8'; // IE 10 em WP8 em modo desktop
$locationUri = "ms-drive-to:?destination.latitude=" + $latlong[0] + "&destination.longitude=" + $latlong[1];
} elseif (preg_match('/windows phone 8/i',$user_agent)) {
$ua_enc = 'wp8'; // IE 10 em WP8 em modo móvel
$locationUri = "ms-drive-to:?destination.latitude=" + $latlong[0] + "&destination.longitude=" + $latlong[1];
} elseif (preg_match('/Windows NT 6.2/i',$user_agent)) {
$ua_enc = 'w8'; // Windows 8
$locationTilde = str_replace(',', '~', $location);
$locationUri = "bingmaps://?cp=".$locationTilde;
} elseif (preg_match('/windows phone/i',$user_agent)) {
$ua_enc = 'wp7'; // Windows Phone 7
$locationSpace = str_replace(',', ' ', $location);
$locationUri = "maps:".$locationSpace;
}
?>
<html>
<head>
<script type="text/javascript">
<!--
window.location = "<?php echo $locationUri; ?>";
//-->
</script>
</head>
</html>

Download

Para formatar e escrever facilmente Geo URI para uma tag NFC, você pode usar a classe NdefGeoRecord da Biblioteca NDEF para APIs de proximidade (licença LGPL). O código completo para um script de redirecionamento web baseado em PHP também faz parte da biblioteca e pode ser hospedado no seu servidor, ou testados em http://nfcinteractor.com/m?c=60.17,24,829

Referências

Você pode ler mais informações sobre o geo: esquema URI, que suporta a codificação de mais do que apenas latitude e longitude (que são os dois mais importantes para o tamanho gravável limitado de tags típicas NFC). Mais informações sobre o script de redirecionamento tag geo também está disponível no site do projeto Interactor NFC.

Você também pode ler o blog post sobre Geo Tags de março de 2012, com uma perspectiva mais focada da Nokia.

Para mais informações sobre o uso de NFC no Windows 8, dê uma olhada na especificação da API de proximidade. O artigo “adquirir e publicar conteúdo de tags NFC e pares próximos” é recomendado para obter uma compreensão de como usar a API para ler e escrever tags.

This page was last modified on 26 July 2013, at 02:30.
112 page views in the last 30 days.