У одного из наших клиентов недавно возникла потребность показать широту/долготу на карте в форме объекта (это был не адрес, а нефтяная вышка в море).
В качестве отправной точки я использовал следующий пост Элдерора на форумах Microsoft:
Во-первых, вам понадобится ключ Google Maps API, чтобы получить его, следуйте этим инструкциям:
После того, как у вас есть ключ API, на объекте, на котором вы хотите показать карту с маркером, создайте 2 новых поля типа «Десятичное число» с точностью до 6 пунктов и поместите их в форму.
Затем создайте веб-ресурс HTML со следующим содержимым:
Примечание. Необходимо заменить следующие значения:
ВАШ-КЛЮЧ: замените его своим ключом API.
jn_latitude: замените это именем поля, которое содержит значение вашей широты.
jn_longitude: замените это на имя поля, которое содержит ваше значение долготы.
<html><head> <meta name="viewport" content="initial-scale=1.0, user-scalable=no"> <meta charset="utf-8"> <style> html, body, #map-canvas { height: 100%; margin: 0px; padding: 0px } </style> <script src="https://maps.googleapis.com/maps/api/js?key=YOUR-KEY"></script> <meta><meta><meta></head> <body style="word-wrap: break-word;"> <div id="map-canvas"></div> <script> var map; function initialize() { // Retrieve the values from Dynamics CRM var add1Lat = window.parent.Xrm.Page.getAttribute("jn_latitude").getValue(); var add1Long = window.parent.Xrm.Page.getAttribute("jn_longitude").getValue(); var add1Name = 'Position'; // Calculate the values and set options var myLatlng = new google.maps.LatLng(add1Lat, add1Long); var mapOptions = { zoom: 15, center: myLatlng } var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions); var marker = new google.maps.Marker({ position: myLatlng, map: map, title: add1Name }); } // Load the map google.maps.event.addDomListener(window, 'load', initialize); </script> </body></html>
Наконец, добавьте вновь созданный веб-ресурс в форму и опубликуйте изменения.
Откройте запись указанного выше типа и установите значения в полях широты и долготы и обновите страницу.