[Dynamics CRM 2016]取引先企業にGoogleMapを組み込むー1
2016/08/15 Kyo1.Inoue
取引先企業にBingのマップオブジェクトがデフォルトで配置されていますが、
ユーザー登録が面倒だし、マーカーを立てたいので、GoogleMapを配置していみたいと思います。
1.1. Web Resourceとなるhtmlを定義します。
下記、ピンク時の”キー”は、無料なのでGoogleからAPIキーを取得してください。
[htmlファイルの内容]
Google APIキー
[htmlファイルの内容]
[code]<!DOCTYPE HTML>
<html lang="ja">
<head>
<meta charset="UTF-8">
<style type="text/css">
#mapdata {
height: 600px;
}
</style>
</head>
<body id="mapdata">
<!-- <div id="mapdata"></div> -->
<script type="text/javascript">
var map;
var marker;
var geocoder;
// 右クリック抑止
document.oncontextmenu = function () {
return false;
}
function initMap() {
geocoder = new google.maps.Geocoder();
geocoder.geocode({
'address': parent.Xrm.Page.data.entity.attributes.get('address1_composite').getValue().replace( /r/g, " " ) // 取引先企業の住所を取得
}, function(results, status) { // 結果
if (status === google.maps.GeocoderStatus.OK) {
map = new google.maps.Map(document.getElementById('mapdata'), {
center: results[0].geometry.location,
zoom: 15 // 地図のズームを指定
});
marker = new google.maps.Marker({
position: results[0].geometry.location, // マーカーを立てる位置を指定
map: map // マーカーを立てる地図を指定
});
}
else {
alert('Error-' + status);
}
});
}
</script>
<!-- keyがGoogleAPIの認証キーを取得する必要あり 1日あたり地図の生成回数が 25,000回以上で90日連続以上の連続した場合に Googleから課金の連絡が行われるそう -->
<script async defer
src="https://maps.googleapis.com/maps/api/js?key=キー&callback=initMap">
</script>
</body>
</html>
[/code]
WebResourceから親のDynamics CRM フォームの住所を取得します。
複数行テキストのため、改行コードは置換しています。
parent.Xrm.Page.data.entity.attributes.get(‘address1_composite’).getValue().replace( /r/g, ” ” )
1.2. .htmlファイルを作成したら、Webリソースとして登録します。
設定⇒カスタマイズを開き、Webリソースで新規を押下して追加します。

1.4. エンティティを開き、取引先企業のフォームからメインを選択してカスタマイズします。

1.5. Bing Mapは削除して、メモの下に配置しました。メモは10行設定にしました。
配置したWebリソースは20行にしてます。


1.6. 保存して公開し、良い感じで表示されるようになりました。

[Dynamics CRM 2016]取引先企業にGoogleMapを組み込むー2



