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
Pasan los días y seguimos sin saber nada del prometido cliente móvil open source, la verdad es que ya
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./vemaps/vemap.htm
Linea 37
CAr: 58
Error: Constante de cadena sin terminar
Codigo: 0
URL: http://
Doy a aceptar y me salta el siguiente:/vemaps/vemap.htm
Linea: 47
Car: 1
Error: Se esparaba un objeto
Codigo: 0
URL: http://
Hola,
Utiliza el formulario de contactar por email que hay en la cabecera del blog y envíame el código de la página, a ver si puedo echarte una mano.
Saludos
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.
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?
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
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.
Hola,
¿Tienes acceso a internet desde la máquina dónde se ejecuta el servido?
Por favor, utiliza los foros de Geeks.ms http://geeks.ms/forums para responder y pega el códgio que estas utilizando.
Un saludo, y gracias por el comentario
Existe alguna forma de implementar Virtual Earth, en WinForms??
He buscado informacion, y no he visto nada acerca de eso…
gracias
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.
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.