javascript - Google map v3 地理编码

标签 javascript jquery google-maps google-geocoder

我正在尝试对地名进行地理编码,但是当我运行该函数时,我得到了,

我的控制台中的“空字符串”,

下面是我的代码为什么会发生这种情况?

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/

相关文章:

jquery - 如何使用phonegap实现leadbolt应用程序图标、通知或解锁器

javascript - DIV 中的文本对齐(TEXT 没有空格)

javascript - 加载所有元素后更新背景

javascript - Jquery POST 不填充数组

javascript - 带拖放功能的 JQuery 可排序/可选择插件?

javascript - 单击事件始终使用最后一个标记

android - 在 android 的 v2 中点击按钮刷新谷歌地图

ios - Google map openNowStatus 始终返回未知(状态 2)

javascript - setAttribute ('src' ,'page.html' ) 不工作

javascript - 如何在 three.js 中将 MTL 纹理添加到 OBJ