最新消息:ww12345678 的部落格重装上线,希望大家继续支持。

[原创]将Microsoft Dynamics AX 2012 中的地图功能指向百度地图引擎

AX 2012 William 2941浏览 0评论

Microsoft Dynamics AX 2012 新增加了一个根据地址信息查看在线地图的功能。

比如打开客户详细信息窗体,在地址快速选项卡下面单击“映射”按钮(英文翻译为Map,中文翻译的有问题),系统会打开Bing地图并使用地址信息进行搜索和定位。

遗憾的是,Bing地图比较简陋且对国内的地址支持远不如本土的百度地图,让我们改造一下系统的标准功能:若地址在中国范围的话,调用百度地图引擎进行搜索和定位。

1.打开开发工作区,定位到“AOT-Class-smmUtility-mapIt”方法,添加以下代码:

 

 

 

 

public static void mapIt(LogisticsPostalAddress _address)
{
    #DEFINE.MapURL('http://maps.bing.com/default.aspx?where1=%1')
    #DEFINE.MapURL_Baidu('http://api.map.baidu.com/geocoder?address=%1&output=html&src=YourCompany|DynamicsAX2012')
    #DEFINE.comma(',')
    #DEFINE.newLine('n')

    str     address;
    ;
    if (_address)
    {
        switch (_address.CountryRegionId)
        {
            case 'CHN':
                address = _address.CountryRegionId + #comma +
                    _address.State + #comma +
                    _address.City + #comma +
                    _address.Street;
                break;

            default:
            address = _address.Street + #comma +
                _address.City + #comma +
                _address.State + #comma +
                _address.ZipCode + #comma +
                _address.CountryRegionId;
        }

        // Replace the newline with comma
        address = strReplace(address, #newline, #comma);
        // URL encode
        address = System.Web.HttpUtility::UrlEncode(address);
        // Add the address to the URL
        switch (_address.CountryRegionId)
        {
            case 'CHN':
                infolog.urlLookup(strFmt(#MapURL_BaiDu, address));
                break;
            default:
                infolog.urlLookup(strFmt(#MapURL, address));
        }

    }
}

2.完成之后,当地址所在国家为中国时,系统将调用百度地图进行搜索和定位。

 

 

转载请注明:ww12345678 的部落格 | AX Helper » [原创]将Microsoft Dynamics AX 2012 中的地图功能指向百度地图引擎

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址