谷歌地图JavaScript问题
首先,提前感谢您抽出时间来帮助我,我感谢您的努力 我有一个谷歌地图api的问题,JavaScript版本3 我已经编写了以下代码谷歌地图JavaScript问题,javascript,google-maps-api-3,Javascript,Google Maps Api 3,首先,提前感谢您抽出时间来帮助我,我感谢您的努力 我有一个谷歌地图api的问题,JavaScript版本3 我已经编写了以下代码 $('.adr').ready(function(){ initialize(); }) function initialize() { var myLatlng = codeAddress(); var myOptions = { zoom: 14, center: myLatlng,
$('.adr').ready(function(){
initialize();
})
function initialize() {
var myLatlng = codeAddress();
var myOptions = {
zoom: 14,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.SATELLITE
};
var map = new google.maps.Map(document.getElementById("map_canvas"),myOptions);
}
function codeAddress()
{
var geocoder = new google.maps.Geocoder();
var address;
var street = cropAdr($(".street-address").text());
var city = cropAdr($(".locality").text());
var state = cropAdr($(".region").text());
var zip = cropAdr($(".zip").text());
address = street + ", " + city + ", " + state + ", " + zip;
geocoder.geocode( {'address': address}, function(results, status)
{
if (status == google.maps.GeocoderStatus.OK)
{
var latlng = results[0].geometry.location;
return latlng;
}
else
{
alert("Geocode was not successful for the following reason: " + status);
return null;
}
});
}
function cropAdr(args)
{
var index = args.indexOf(":");
var value = args.substr(index+1);
return value;
}
但它不起作用
我已经检查了“results[0].geometry.location”返回值及其完美值,因此地址操作有效。“results[0].geometry.location”是一个google.maps.Latlng对象,但我尝试将co词作为字符串去掉,然后创建一个新的google.maps.Latlng对象,但没有骰子
然而,如果我手动复制该字符串并将该值粘贴到“var myLatlng=new google.maps.Latlng(在此处粘贴复制的字符串!)”中,整个过程都会成功
我看不出这个脚本还有什么错(为Jquery和JavaScriptpt的混乱道歉) Google Maps API Geocoder接受一个函数,该函数将在地址进行地理编码后运行,但该函数可以异步调用,也就是说,在您的其余代码已经完成运行之后 在codeAddress中,调用地理编码器并通过以下行传入函数:
geocoder.geocode( {'address': address}, function(results, status)
然后尝试从传递给地理编码器的函数返回latLng,但这与从codeAddress返回值不同。从该函数内部返回的值将传递给geocoder对象,该对象将忽略它
您需要让传递给geocode的函数对latLng做些什么。例如,替换:
return latLng;
与:
一旦结果可用,地图应该以地理编码地址为中心
(要做到这一点,您需要将map对象设置为全局对象或以其他方式使其可用于codeAddress。我建议在代码顶部添加“var map;”,并在初始化中使用map之前删除“var”)我已经尝试了您的建议,将var map;在屏幕顶部,从initialise()中的“Var映射”中删除Var,将“return latlng”更改为“map.setCenter(latlng)”;将原始的“Center:myLatlng”更改为(0,0)的预定义latlng对象,并尝试为null。也被称为codeAddress();地图初始化后,也尝试过。但什么都不管用…我解决了!你是对的,但当我启动地图中心原点时,它已经将Latlng,insread放在Latlng上,这导致了一个JS错误。。。谢谢你的帮助。
map.setCenter(latLng);