我正在尝试使用以下代码根据Microsoft动态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://而遇到问题。
有没有其他人遇到同样的错误。
如果您自己的代码尚未在域中,则不能使用 XMLHttp 访问该域中的数据(跨域限制)。由于代码不是从 google.com 提供的,因此无法访问该域中的数据。
对于 Javascript,请使用 Javascript API 中的地理编码服务,正如 Mano 所评论的那样。从本质上讲,它使用 JSON,并且不受这种方式的约束。
请转到网址,http://rubenb.home.xs4all.nl/latitudelongitude/latlon.html
只需键入地址即可将地址转换为经度和纬度。只要使用以下格式,您就可以键入世界上的任何地址:街道、城市、国家或街道、城市、州。甚至您可以找到属于门牌号的经度和纬度。您可以将经度或纬度复制并粘贴到GPS或任何使用长/纬度的程序,例如"poi编辑器"或"IGo poi资源管理器"。如果您想为导航工具创建 Poi 文件,此站点非常有用。
此站点使用的是 Google 的地理编码脚本。地理编码是估计给定位置的纬度和经度的过程。