Geocodificación

Un mapa coloca una fila en su latitud y longitud, que la mayoría de las filas no tienen. Registra la dirección de una tabla con AddGeocoding, y las coordenadas de sus filas se completan a partir de sus direcciones a medida que se crean y actualizan, por el servicio de geocodificación, los nombres de configuración del portal.

Almacenamiento de resultados geocodificados

Guardar coordenadas en tus registros es almacenar los resultados de un geocodificador, y los términos de los proveedores difieren en eso: algunos limitan cuánto tiempo pueden mantenerse los resultados, otros cobran por los resultados almacenados y otros permiten que solo se muestren en sus propios mapas. Power Portals Pro proporciona solo esta capacidad. Asegurarte de que tu proveedor, tu plan y tu uso de los resultados cumplen con sus términos es tu responsabilidad.

Registro de una dirección

Las cuentas y contactos tienen un atajo cada uno, para su primera dirección: sus líneas, ciudad, condado, estado o provincia, código postal y país, hacia address1_latitude y address1_longitude.

Cualquier otra tabla nombra sus columnas: las líneas de la calle, la ciudad, el condado, el estado o provincia, el código postal y el país, cada uno una columna de texto, elección o consulta (el geocodificador lee la etiqueta de una opción y el nombre de la consulta), y las columnas numéricas en las que aparecen sus coordenadas.

Lo que un registro nombra se comprueba en Dataverse al inicio del portal: una columna que la tabla no tiene, o de tipo incorrecto, impide que comience con un mensaje que nombra la tabla y la columna. Registrado dos veces, el segundo registro de una tabla reemplaza al primero.

Lo que hace una parada

  • Una creación con una dirección está geocodificada. Una actualización solo se geocodifica cuando cambia la dirección: una partida guardada que envía la dirección tal y como estaba, o que solo cambia otras columnas, no pregunta a nadie.
  • Una actualización solo lleva las columnas que cambia, por lo que la dirección geocodificada son esos cambios que se superponen sobre la dirección almacenada.
  • Las coordenadas se envían en la misma partida guardada, independientemente de si el usuario puede establecer esas columnas: la geocodificación se ejecuta como el usuario de la app, una vez superadas las comprobaciones del usuario ( véase Interceptors). La dirección almacenada también se lee como la app, para el geocodificador, no para el usuario. Una sesión que Dataverse asegura (DataverseSecurity) es la excepción: se envía a Dataverse como su usuario, por lo que la seguridad de columna propia de Dataverse sigue aplicándose a las coordenadas.
  • Una partida guardada que establece las coordenadas por sí misma, como un pin movido a mano, mantiene la suya propia.
  • Nunca se niega a guardar sus coordenadas. Una dirección que no se encuentra en ningún sitio, o una sobre la que no se puede consultar el servicio en un Geocoding:Timeout plazo de diez segundos por defecto, se guarda sin coordenadas, al igual que una vacía, en lugar de mantener la ubicación de la dirección delante. Se registra una advertencia, sin la dirección.

Las filas guardadas antes de que se registrara la geocodificación mantienen las coordenadas que tienen hasta que cambie su dirección.

Proveedores

El servicio se establece en la PowerPortalsPro:Maps:Geocoding sección, aparte del proveedor que dibuja los mapas: Geocoding:Provider lo nombra y se usa el proveedor del mapa cuando no lo hace.

  • Azure Maps (AzureMaps): solicitado como la identidad propia del portal, como son sus mapas, por lo que no se necesita clave. Establecer AzureMaps:ClientId; el rol de Azure Maps Data Reader de la identidad le permite buscar.
  • Esri (Esri): pidió que se almacenen sus resultados, por lo que ArcGIS cobra. Su clave, en Geocoding:ApiKey, necesita el privilegio de geocodificación y debe funcionar desde el servidor, no solo desde las direcciones de tu portal como lo hace la clave de un mapa.
  • Google (Google): una clave Geocoding:ApiKey con la API de Geocodificación que funciona desde el servidor; la clave de un mapa, restringida a las direcciones de tu portal, es rechazada.
  • OpenStreetMap (OpenStreetMap): cualquier servidor Nominatim, el propio de OpenStreetMap a menos que Geocoding:Url nombre otro, y el predeterminado cuando nada nombra a un proveedor. El servidor propio de OpenStreetMap se pide como máximo una vez por segundo, así que los guardados esperan a la vez su turno y uno que espera más tiempo del Geocoding:Timeout que se guarda sin coordenadas. También quiere saber quién pregunta: configura Geocoding:UserAgent el nombre de tu portal y una forma de contactarte. Su política de uso desaconseja la geocodificación regular por parte de una aplicación, así que usa un servidor propio en producción.

Una vez registrada una dirección, se comprueban los ajustes al iniciar el portal: un proveedor sin lo que necesita impide que empiece con un mensaje que nombra la configuración.

Un geocodificador propio

Registrar y IGeocoder para pedir otro servicio. Se le da la dirección como la contiene su fila, con una forma de una línea de ToString(), y devuelve las coordenadas, o ninguna cuando nada coincide; lanzar guarda la fila sin coordenadas.

Coordenadas sin geocodificación

Una tabla cuyas filas obtienen sus coordenadas de otra manera registra solo las columnas en las que están, con AddMapCoordinates, al igual que AddGeocoding la suya propia. Un mapa de varias tablas coloca entonces las filas de la tabla con ForMaps() solo.