我正在尝试对地名进行地理编码,但是当我运行该函数时,我得到了,
我的控制台中的“空字符串”,
下面是我的代码为什么会发生这种情况?
function getLatLong(address)
{
var geocoder = new google.maps.Geocoder();
var result = "";
geocoder.geocode( { 'address': address, 'region': 'uk' }, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
result = results[0].geometry.location;
} else {
result = "Unable to find address: " + status;
}
});
console.log(result);
}
更新
好的,所以我已经将我的值发送到控制台,现在当我尝试将元素的值插入函数时,我得到未定义的返回,下面是完整的代码,
function getLatLong(address)
{
var geocoder = new google.maps.Geocoder();
var result = "";
geocoder.geocode( { 'address': address, 'region': 'uk' }, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
result = results[0].geometry.location;
return result;
} else {
result = "Unable to find address: " + status;
alert(result);
}
});
}
//getLatLong("YORK");
function loadScript(postcode){
alert(postcode);
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "http://maps.google.com/maps/api/js?sensor=false&callback=initialize?"+postcode;
document.body.appendChild(script);
}
/* load map on visitors location */
function initialize(postcode){
var myLatlng = new google.maps.LatLng(getLatLong(postcode));
var myOptions = {
center: myLatlng,
zoom:13,
disableDefaultUI: true,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
var map = new google.maps.Map(document.getElementById('map'), myOptions);
google.maps.event.trigger(map, 'resize');
map.setZoom(map.getZoom());
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
icon:'http://google-maps-icons.googlecode.com/files/home.png',
});
}
它的名字是这样的,
$(function(){
$("dd a, dt a").live("click", function(){
var self = $(this);
$("#overlay").fadeIn('slow');
var targetProcent = 85;
var targetWidth = $(window).width() * (targetProcent / 100);
var targetHeight = $(window).height() * (targetProcent / 100);
var targetX = ($(window).width() - targetWidth) / 2;
var targetY = ($(window).height() - targetHeight) / 2 + $(document).scrollTop();
$('#lightbox').height(700);
$('#lightbox').width(targetWidth);
$('#lightbox').load(self.attr("href"));
loadScript($("#postcode").val());
//usePointFromPostcode(document.getElementById('postcode').value, placeMarkerAtPoint)
$('#lightbox').css({
"position": "absolute",
"top": targetY+"px",
"left": targetX+"px"
}).fadeIn('slow');
return false;
});
});
$("#postcode").val() 与使用 load() 时加载的元素相关
最佳答案
您进行异步调用,然后打印到控制台。电话还没回
解决方案:
将console.log移动到回调中
编辑:
回调是您作为参数传递给地理编码的匿名函数,其签名是 function(results, status)
您应该将 console.log
调用放在以下位置的末尾该功能
编辑您的编辑:
您的脚本网址看起来错误:
"http://maps.google.com/maps/api/js?sensor=false&callback=initialize?"+postcode
我很确定添加 ?postcode 没有任何作用。如果有的话,url 应该只包含一个 ?在查询参数开始之前。
您似乎想将邮政编码传递给 initialize
函数,最简单的方法是通过全局变量。
在loadScript
函数中设置全局变量并在initialize
函数中读取
关于javascript - Google map v3 地理编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6372842/