Crear un enlace a Streetview en la Ventana Emergente con Arcade

4425
6
10-25-2017 12:57 PM

Crear un enlace a Streetview en la Ventana Emergente con Arcade

En el documento Determinar Días Hábiles y Horas Horario de Trabajo con Arcade mostramos una manera para visualizar el tiempo que está abierto una solicitud. En este documento mostramos como podemos trabajar con la geometría (en caso que la capa está publicado con GCS_WGS1984) para generar un URL y visualizar la ubicación del punto en Streetview de Google:

 

 

Haciendo clic sobre el enlace abre una nueva pestaña con streetview:

 

Para lograr esto debemos contar con:

  • puntos publicados en GCS_WGS1984 o
  • features con atributos de latitud y longitud 

 

En la configuración de la ventana emergente podemos adicionar la siguiente expresión Arcade:

 

Expresión:

// Get Lat Lon from geometry (if sr=GCS_WGS1984)
var lat = Geometry($feature).Y;
var lon = Geometry($feature).X;

// Or get it from attributes (if available)
var lat = $feature.Latitude;
var lon = $feature.Longitude;

// http://maps.google.com/?cbll={Lat},{Lon}&cbp=12,90,0,0,5&layer=c
var url = "http://maps.google.com/?cbll=" + lat + "," + lon + "&cbp=12,90,0,0,5&layer=c";

return url;‍‍‍‍‍‍‍‍‍‍‍‍

 

Además configuramos que la ventana emergente muestre una visualización de atributo personalizado:

 

Con el siguiente código HTML:

<img alt="Streetview" src="http://cdnau.ibtimes.com/sites/au.ibtimes.com/files/2015/10/14/google-street-view-logo.png" width="75" />
 <a href="{expression/expr0}">Ver en Google Streetview</a>‍‍

 

En caso de tener lineas también se puede hacer algo similar para el punto inicial o final de la linea. Ver la expresión Arcade abajo:

Function GetFirstPoint(line) {
    var paths = geom["paths"];
    var first_point = Point(paths[0][0]);
    return first_point;    
}

Function GetLastPoint(line) {
    var paths = geom["paths"];
    var last_point = Point(paths[0][-1]);
    return last_point;    
}

var geom = Geometry($feature);

var first_point = GetFirstPoint(geom);
var x = first_point.x;
var y = first_point.y;
// o:
var last_point = GetLastPoint(geom);
var x = first_point.x;
var y = first_point.y;

// http://maps.google.com/?cbll={Lat},{Lon}&cbp=12,90,0,0,5&layer=c
var url = "http://maps.google.com/?cbll=" + y + "," + x + "&cbp=12,90,0,0,5&layer=c";

return url;
‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍
Comments

Una consulta, conectar con este servicio de StreetView tiene algún costo por parte de Google?? o es completamente gratis???   saludos cordiales

Hola Juan Carlos Carpio Concha , 

Te recomiendo revisar en el sitio de Google StreetView acerca las limitaciones y posibles costos de uso. En el pasado se han quitado soluciones en GeoNet que estaban en conflicto con los términos de uso por mostrar el icono de StreetView sobre un mapa que no es de Google. En este caso se abre una pestaña nueva con StreetView, pero no estoy seguro que está de acuerdo con el uso permitido definido por Google. 

Buenas tardes, Seguí paso a paso el tutorial para lograr integrar el Google Street view, sin embargo tengo el siguiente problema:

la siguiente linea de código no me funciona en lo absoluto:

// Or get it from attributes (if available)
var lat = $feature.Latitude;
var lon = $feature.Longitude;

además, si lo elimino y trato de trabajar con la siguiente linea de codigo

// Get Lat Lon from geometry (if sr=GCS_WGS1984)
var lat = Geometry($feature).Y;
var lon = Geometry($feature).X;

no importa si los puntos los establezco en diferentes partes del mapa, todos me redireccionan a otro lado que no tiene que ver con el pais, me sitúa en un lugar llamado: pico dos pireneus, y es un lugar que no tiene nada que ver con Colombia y la ciudad de Ibagué, lugar donde tengo el mapa.

Agradezco la pronta respuesta.

Muchísimas gracias.

Hola Maria

A mi me funciona esta expresión: copialo y pegalo en una nueva expresion.

// Converts Longitude from metres to decimal degrees
var originShift = 2.0 * PI * 6378137.0 / 2.0;
var lon = (Geometry($feature).x / originShift) * 180.0;

// Converts Latitude from metres to decimal degrees
var originShift = 2.0 * PI * 6378137.0 / 2.0;
var lat = (Geometry($feature).y / originShift) * 180.0;
lat = 180.0 / PI * (2.0 * Atan( Exp( lat * PI / 180.0)) - PI / 2.0);

// Combines the features coordinates to the Google Street View URL
var url = Concatenate("http://maps.google.com/?cbll=" ,lat, "," ,lon, "&cbp=12,90,0,0,5&layer=c");
url

saludos

me avisas que tal te fue

Hola maria ibal ,

El ejemplo de este blog está basado en tener unos atributos con las coordenadas latitud y longitud. SI no tienes estas coordenadas disponibles como atributos, y los datos están en un sistema de coordenadas proyectadas (por defecto AGOL está usando Web Mercator Auxiliary Sphere), no tienes coordenadas de latitud y longitud que se requiere para este la URL. Lo que se requiere es calcular las coordenadas latitud y longitud desde los X y Y proyectados. 

Para darte un poco más de información sobre este cálculo similar a lo que Juan Carlos Carpio  te está proponiendo, te comparto otro blog:

Crear un enlace con Arcade para Navegar con Waze desde la Ventana Emergente 

Juan Carlos muchísimas gracias, la verdad el código que me diste me fue como anillo al dedo en cuanto a lo que necesitaba.

Version history
Last update:
‎11-23-2020 08:24 AM
Updated by:
Contributors