Agregar una columna de Geolocalización en una lista mediante programación en SharePoint

Aprenda cómo agregar mediante programación una columna de Geocalización a una lista en SharePoint. Integre la información de ubicación y mapas en listas de SharePoint y en sitios web basados en la ubicación mediante el nuevo campo de Geolocalización y creando su propio tipo de campo basado en la Geolocalización.

SharePoint presenta un nuevo tipo de campo denominado Geolocalización que le permite realizar anotaciones en las listas de SharePoint con la información de ubicación. En columnas de tipo Geolocalización puede escribir la información de ubicación como un par de coordenadas de latitud y longitud en grados decimales o recuperar las coordenadas de la ubicación actual del usuario en el explorador si implementa la API de geolocalización W3C. Para obtener más información sobre la columna de Geocalización, consulte Integración de las funciones de ubicación y mapas en SharePoint. La columna Geolocation no está disponible de forma predeterminada en las listas de SharePoint. Para agregarla, deberá escribir código. En este artículo aprenderá a agregar un campo de ubicación geográfica a una lista mediante programación usando el modelo de objetos de cliente de SharePoint.

Existe un paquete MSI llamado SQLSysClrTypes.msi que debe instalarse en cada servidor web front-end de SharePoint para poder ver el valor del campo de geolocalización o los datos de la lista. Este paquete instala componentes que implementan los nuevos tipos de Id. de jerarquía, geografía y geometría de SQL Server 2008. De forma predeterminada, este archivo se instala en SharePoint Online. Sin embargo, no es para una implementación local de SharePoint. Para poder llevar a cabo esta operación, necesita ser miembro del grupo Administradores de la granja de servidores. Para descargar SQLSysClrTypes.msi, consulte Microsoft SQL Server 2008 R2 SP1 Feature Pack para SQL Server 2008 o Microsoft SQL Server 2012 Feature Packpara SQL Server 2012 en el Centro de descarga de Microsoft.

Requisitos previos para agregar una columna de Geolocalización

Nota:

PnP PowerShell es una solución de código abierto con una comunidad activa que ofrece su soporte. No hay ningún contrato de nivel de servicio para el soporte de la herramienta de código abierto de Microsoft.

Ejemplo de código: agregar una columna de Geolocalización a una lista existente mediante programación

Siga estos pasos para agregar la columna Geolocalización a una lista. Esto debe realizarse mediante programación con CSOM o PowerShell.

Para agregar una columna de Geolocalización a una lista mediante PnP PowerShell

  1. Abrir PowerShell

  2. Conéctese al sitio en el que quiere agregar la columna

    Connect-PnPOnline -url "https://TENANT.sharepoint.com/sites/SITEURL"
    
  3. Abra la lista a la que desea agregar la columna

    $list = Get-PnPList -Identity "LISTNAME"
    
  4. #Add el campo Geolocalización: cambie los parámetros según sea necesario.

    Add-PnPField -List $list -Type GeoLocation -DisplayName "GeoLocationField" -InternalName "GeoLocationField" -AddToDefaultView -Required
    

Para agregar una columna de Geolocalización a una lista mediante el modelo de objetos de cliente en Visual Studio

  1. Inicie Visual Studio.

  2. En la barra de menús, elija Archivo, Nuevo proyecto. Se abre el cuadro de diálogo Nuevo proyecto.

  3. En el cuadro de diálogo Nuevo proyecto, elija C# en el cuadro Plantillas instaladas y, después, escoja la plantilla Aplicación de consola.

  4. Dé un nombre al proyecto y haga clic en el botón Aceptar.

  5. Visual Studio crea el proyecto. Agregue una referencia a los siguientes ensamblados y haga clic en Aceptar.

    • Microsoft.SharePoint.Client.dll
    • Microsoft.SharePoint.Client.Runtime.dll
  6. En el archivo .cs predeterminado, agregue una directiva using del siguiente modo.

    using Microsoft.SharePoint.Client;
    
  7. Agregue el siguiente código al método Main en el archivo .cs.

    class Program
    {
      static void Main(string[] args)
      {
        AddGeolocationField();
        Console.WriteLine("Location field added successfully");
      }
      private static void AddGeolocationField()
      {
        // Replace site URL and List Title with Valid values.
        ClientContext context = new ClientContext("<Site Url>");
        List oList = context.Web.Lists.GetByTitle("<List Title>");
        oList.Fields.AddFieldAsXml("<Field Type='Geolocation' DisplayName='Location'/>",true, AddFieldOptions.AddToAllContentTypes);
        oList.Update();
        context.ExecuteQuery();
      }
    }
    
  8. Sustituya <Site Url> y <List Title> por valores válidos.

  9. Establezca el marco de destino en Propiedades del proyecto como .NET Framework 4.0 o 3.5 y ejecute el ejemplo.

  10. Vaya a la lista. Debería ver una columna denominada Location de tipo ubicación geográfica en la lista. Llegado este punto, puede especificar algunos valores y ver los resultados en acción. La figura 1 muestra la ubicación predeterminada y las características de mapa que espera que figuren en la lista.

    Figura 1. Vista resumida de la ubicación predeterminada y características de mapa Característica predeterminada de geolocalización y mapas

Agregar un elemento de lista con el valor del campo de Geolocalización a una lista de SharePoint mediante programación

After the Geolocation field is added to a SharePoint list, the developer can add the list item to the list programmatically. Existen dos modos de hacerlo: pasando el objeto FieldGeolocationValue al campo de ubicación geográfica o pasando un valorsin formato al campo de ubicación geográfica.

Método A: Pasar el objeto FieldGeolocationValue al campo de ubicación geográfica

  • Mediante el siguiente método se agrega un elemento de lista pasando el valor de ubicación geográfica como un objeto.

    private void AddListItem() {
      // Replace site URL and List Title with Valid values.
      ClientContext context = new ClientContext("<Site Url>");
      List oList = context.Web.Lists.GetByTitle("<List Name>");
    
      ListItemCreationInformation itemCreationInfo = new ListItemCreationInformation();
      ListItem oListItem = oList.AddItem(itemCreationInfo);
    
      oListItem["Title"] = "New Title";
    
      FieldGeolocationValue oGeolocationValue = new FieldGeolocationValue();
      oGeolocationValue.Latitude = (double)17.4;
      oGeolocationValue.Longitude = (double)78.4;
      oListItem["location"] = oGeolocationValue;
    
      oListItem.Update();
      context.ExecuteQuery();
    }
    

Método B: Pasar un valor sin formato al campo de ubicación geográfica

  • Mediante el siguiente método se agrega un elemento de lista a la lista de SharePoint pasando valores sin formato al campo de ubicación geográfica.

    private void AddListItem() {
      // Replace site URL and List Title with Valid values.
      ClientContext context = new ClientContext("<Site Url>");
      List oList = context.Web.Lists.GetByTitle("<List Name>");
    
      ListItemCreationInformation itemCreationInfo = new ListItemCreationInformation();
      ListItem oListItem = oList.AddItem(itemCreationInfo);
    
      oListItem["Title"] = "New Title";
      // Data in WKT (World Known Text) format.
      oListItem["location"] = "POINT (78.4 17.4)" ;
    
      oListItem.Update();
      context.ExecuteQuery();
    }
    

Consulte también