Dynamics crm Google地图未通过Dynamics 365中的Onchange事件更新

Dynamics crm Google地图未通过Dynamics 365中的Onchange事件更新,dynamics-crm,Dynamics Crm,在Dynamics 365(版本:8.2)中,我使用web资源加载google地图,然后尝试通过CRM输入字段中的onchange事件启动google地图,但它显示错误警报消息: ReferenceError:initMap上未定义google 我通过找到iframe找到了解决方案,然后打电话给google map。如下所示: var description = Xrm.Page.getAttribute('new_street').getValue(); // Get the HTML iF

在Dynamics 365(版本:8.2)中,我使用web资源加载google地图,然后尝试通过CRM输入字段中的
onchange
事件启动google地图,但它显示错误警报消息:

ReferenceError:initMap上未定义google

我通过找到iframe找到了解决方案,然后打电话给google map。如下所示:

var description = Xrm.Page.getAttribute('new_street').getValue(); 
// Get the HTML iFrame object. 
var iFrame = Xrm.Page.ui.controls.get('WebResource_Map').getObject(); 
// Get the element from the iFrame. 
var element = iFrame.contentWindow.document.getElementById('addr_line1'); 
var ifr = iFrame.contentWindow; 
// Set the element's value. 
element.value = description+' ';

我需要这方面的帮助。

我建议您这样做:

  • 从加载google地图(Web资源)的脚本中,获取表单属性值(地址字段)

  • 每当您需要刷新地图以防任何字段更改时,只需重新加载表单中嵌入的web资源,它就会自动再次调用google地图,从而设置您的新位置

  • 更改要刷新映射的字段时,可以调用reloadmaponfeldchange()

    function refreshWebResource(name) {
    
        var _webResourceControl = Xrm.Page.getControl(name);
    
        if(_webResourceControl!=null && _webResourceControl!="" && _webResourceControl!=undefined)
        {
            var _src = _webResourceControl.getSrc();
            _webResourceControl.setSrc(null);
            _webResourceControl.setSrc(_src);
        }   
    }
    
    function reloadMapOnFieldChange(){
    
        refreshWebResource(<Name of your Map Web Resource>);
    }
    
    函数refreshWebResource(名称){
    var\u webResourceControl=Xrm.Page.getControl(名称);
    如果(_webResourceControl!=null&&&u webResourceControl!=“”&&u webResourceControl!=未定义)
    {
    var_src=_webResourceControl.getSrc();
    _webResourceControl.setSrc(null);
    _webResourceControl.setSrc(_src);
    }   
    }
    函数reloadmaponfeldchange(){
    refreshWebResource();
    }
    
    大家好,欢迎来到StackOverflow。请参阅关于如何提出适当问题并根据指导原则改进您的问题。作为第一步,请添加您正在运行的代码。Dynamics 365具有现成的Bing地图,无需重新发明轮子。除非你的系统有成千上万的用户,否则你很可能可以免费使用。谢谢Fabian和Alex的回复。我通过找到iframe并调用googlemap得到了解决方案。如下所示:var description=Xrm.Page.getAttribute('new_street')。getValue();//获取HTML iFrame对象。var iFrame=Xrm.Page.ui.controls.get('WebResource_Map').getObject();//从iFrame获取元素。var element=iFrame.contentWindow.document.getElementById('addr_line1');var ifr=iFrame.contentWindow;//设置元素的值。element.value=描述+“”@Bibhuti Sattathy,我把代码移到了问题中,但我没有看到有人打电话给谷歌。还有更多的代码吗?如果是,请将其添加到问题中。