我正在尝试使用以下代码根据Microsoft Dynamics CRM 2011 Online中的地址返回经度和纬度。地址正常,但下面的代码不起作用。任何人都可以帮我弄清楚原因。
try
{
var xHReq = new ActiveXObject("Msxml2.XMLHTTP");
xHReq.Open("GET", "http://maps.google.com/maps/api/geocode/xml?sensor=false&address=" + address, false);
xHReq.Send(null);
var resultXml =xHReq.responseXML;
alert(resultXml);
var addressComponents=resultXml.selectNodes("//GeocodeResponse/result/geometry/location");
if (addressComponents != null && addressComponents.length > 0)
{
var long = parseFloat(resultXml.selectSingleNode("//GeocodeResponse/result/geometry/location/lng").nodeTypedValue);
var lat = parseFloat(resultXml.selectSingleNode("//GeocodeResponse/result/geometry/location/lat").nodeTypedValue);
crmForm.all.address1_latitude.DataValue = lat;
crmForm.all.address1_longitude.DataValue = long;
alert(lat);
crmForm.all.address1_latitude.ForceSubmit = true;
crmForm.all.address1_longitude.ForceSubmit = true;
}
}
我收到以下错误消息:权限被拒绝。
我开始怀疑自己是否因网站为https://而遇到问题。
是否有其他人遇到同样的错误。
答案 0 :(得分:2)
如果您自己的代码尚未在该域中(跨域限制),则无法使用XMLHttp访问域中的数据。由于您的代码未通过google.com提供,因此无法覆盖该域中的数据。
对于Javascript,请使用Javascript API中的地理编码服务,如Mano所评论的那样。从本质上讲,它使用JSON并且不受此限制。
答案 1 :(得分:0)
请访问网址http://rubenb.home.xs4all.nl/latitudelongitude/latlon.html
只需输入地址即可将地址转换为经度和纬度。只要您使用以下格式,您就可以在世界上键入任何地址:街道,城市,国家或街道,城市,州。即使您可以找到属于门牌号码的经度和纬度。您可以将经度或纬度复制并粘贴到GPS或任何使用长/纬度的程序,如“poi editor”或“IGo poi explorer”。如果要为导航工具创建Poi文件,此站点非常有用。
此网站正在使用Google的地理编码脚本。地理编码是估算给定位置的纬度和经度的过程。