Integrar Mapas de Virtual Earth en Microsoft Dynamics CRM

Hoy vamos a ver un sencillo ejemplo de cómo integrar mapas en Microsoft Dynamics CRM aprovechando el API de VirtualEarth de Windows Live! Digo sencillo, porque es solo una burda muestra de las posibilidades que nos da este API para conseguir mostrar información geográfica en el CRM.


 


El objetivo es tener una pestaña en el formulario de cuentas donde poder visualizar un mapa centrado en la dirección de la cuenta. Es decir, un mapa centrado en la ubicación de nuestro cliente.


 


 


Para ello no tenemos más que crear una página web con el siguiente código:


 


<html xmlns=»http://www.w3.org/1999/xhtml» >


   <head>


      <title></title>


      <meta http-equiv=»Content-Type» content=»text/html; charset=utf-8″/>


      <script src=»http://dev.virtualearth.net/mapcontrol/v3/mapcontrol.js»>


</script>


      <script>


      var map = null;


           


      function GetMap()


      {        


         var pais = parent.document.forms[0].all.address1_country.DataValue;        


         var provincia = parent.document.forms[0].all.address1_stateorprovince.DataValue;


         var ciudad = parent.document.forms[0].all.address1_city.DataValue;        


        


         map = new VEMap(‘myMap’);


         map.LoadMap();


         if(ciudad!=») map.FindLocation(ciudad+‘, ‘+provincia+‘, ‘+pais);


         else map.FindLocation(‘Madrid, España’);         


      }  


     


      </script>


   </head>


   <body onload=»GetMap();»>


      <div id=’myMap’ style=»position:relative; width:auto; height:auto; «></div>


   </body>


</html>


 


Si os fijáis en el código veréis que mediante JavaScript accedemos a los valores de ciudad, provincia y pais del formulario de Cuenta del CRM. Para luego utilizarlos para fijar la posición del mapa. Al acceder a esos campos estamos utilizando cross-site scripting, por lo que tendremos que habilitar explícitamente esta opción en el IFrame.Si qureis saber más sobre el API y las funcionalidades de los mapas bajaros el SDK de Virtual Earth.


 


Para guardarla crearemos un directorio dentro del sitio web de Dynamics CRM con el objetivo de poder referenciar sencillamente la página en el IFrame que vamos a crear. En mi caso C:Archivos de ProgramaMS CRMCRMWebvemapsvemap.htm


 


Una vez guardada sólo nos resta acceder a Personalización de Entidades en Microsoft Dynamics CRM y abrir la entidad cuenta. Dentro de esta buscaremos el formulario principal y lo editaremos, añadiendo una nueva pestaña que contendrá una nueva sección, que a su vez contendrá el nuevo IFrame. En las propiedades del IFrame indicaremos la url de la página que hemos creado (ie: /vemaps/vemap.htm) y habilitaremos el cross-site scripting.


 


 


 


Guardamos los cambios, salimos y publicamos las personalizaciones, y ya podemos comprobar como al abrir una cuenta tenemos la nueva pestaña con el mapa centrado en su localización


 


Esto, es un sencillo ejemplo de las posibilidades que nos brindan los IFrames para integrar aplicaciones en el CRM, y de las posibilidades que nos da el API de Virtual Earth para integrar mapas en el CRM. Imaginad mostrar sobre un mapa la distribución geográfica de nuestros clientes, calcular rutas de visita para comerciales… hay un sinfín de posibilidades. ¿Se os ocurren más? ¿Alguna experiencia con Información Geográfica?


 


Espero que os haya gustado el ejemplo, un saludo


 


Marco Amoedo Martínez

11 comentarios sobre “Integrar Mapas de Virtual Earth en Microsoft Dynamics CRM”

  1. He intentado hacer esto y me da un error y no se porque alguien podria ayudarme. Cuando accedo a que haga una carga del mapa, me da el siguiente error:

    Hay problemas con la pagina. POdria no mostrarse o no funcionar correctamente.
    Linea 37
    CAr: 58
    Error: Constante de cadena sin terminar
    Codigo: 0
    URL: http:///vemaps/vemap.htm

    Doy a aceptar y me salta el siguiente:
    Linea: 47
    Car: 1
    Error: Se esparaba un objeto
    Codigo: 0
    URL: http:///vemaps/vemap.htm

  2. En la actualidad se requiere georeferenciar los puntos en donde se aplican investigaciones como estudios de mercado, fincas agricolas, industrias, unidades habitacionales, comercios, unidades de servicios y guardar las coordenadas planas o geograficas utilizando GPS, para posteriormente poder espacializar estos datos.
    El desarrollo se esta haciendo con .Net, y se utilizaran servicios Web.
    La inquietud es el como integrar el componente cartografico con el Winform en el dispositivo movil.

  3. Hola! Marco excelente articulo y excelente blog, e intentado hacer lo que me comentas sin embargo no me emnvia ninguna información el CRM que tengo esta en español, alguna sugerencia?

  4. En el formulario de opciones del IFRAME tienes que marcar la opción «pasar código tipo objeto de registro e id. único cómo parámetros». Esta opción aparece justo debajo del campo donde indicas la URL del IFRAME.
    Por error, la imagen que aparece en el post tiene esa opción sin marcar.

    Un saludo, y gracias por el comentario

  5. He provado ha seguir los pasos y me sale el formulario en blanco. ¿Que hago mal o como puedo saber que hago mal?.
    Un saludo y felicitarte por la tarea que realizas que es de gran ayuda para la gente que estamos empezando.
    Gracias.

  6. Hola,
    A modo de extender el artículo de Marco, resaltar que además de poder mostrar el mapa de la situación del account podemos mostrar en forma de ruta:

    Utilizando el map.Getroute(salida,destino,unidad_medida,tipo_ruta,callout)

    Éstos parámetros són los que necesitais del CRM : Salida y destino són las poblaciones de salida (mi empresa por ejemplo) y la de mi cliente.

    Lo tenéis todo en la documentación de Virtual Earth. O sea que no os lo perdàis.

    Saludos a todos.
    PS: No seria interesante, buscar la misma funcionalidad con google api? Si puedo os digo algo del tema.

  7. Hola estoy tratando de hacer algo similar a esto.

    Tengo montado mi CRM en un server y estoy tratando de poner en un IFRAME un aspx que hace un llamado a un webservice, para este llamado necesito obtener un dato que se encuentra en uno de los tabs de mi CRM, pero no puedo accesar a el desde mi aspx, lo estoy haciendo de la siguiente manera.

    var variable = parent.document.forms[0].all.new_idalumno.DataValue;

    Espero que alguien me pueda ayudar.
    Mi correo es phenics@hotmail.com
    Gracias.

Responder a anonymous Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *