2010-12-22 63 views
0
$(function(){ 

    //Location was "set". Perform actions. 
    $("#geocodesubmit").click(function(){ 
     var geocoder = new google.maps.Geocoder(); 
     geocoder.geocode({ 'address': address}, function(results, status) { 
     if (status == google.maps.GeocoderStatus.OK) { 
      $("#map_canvas").show(); 
      var myOptions = { 
       zoom: 15, 
       center: results[0].geometry.location, 
       mapTypeControl:false, 
       mapTypeId: google.maps.MapTypeId.ROADMAP, 
       scrollwheel:false, 
      }; 
      var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 
      var marker = new google.maps.Marker({ 
        map: map, 
        position: results[0].geometry.location, 
        draggable:true 
      }); 
     } 
     }); 

     return false; 
    }); 

    //Marker was dragged. 
    google.maps.event.addListener(marker,"dragend",function(){ 
      alert('hi'); 
    }); 
}); 

正如你在这里看到的,当用户点击一个按钮时,我生成一个新的Google map和一个新的。但问题是标记没有被绑定。我的一个javascript变量是undefined,我该怎么办?

当这个页面加载,有一个错误:

Uncaught ReferenceError: marker is undefined

我猜这是因为直到按钮被点击才启动标记。我如何成功绑定市场? (我更喜欢在点击按钮后加载地图,因为在加载页面时加载地图时存在显示问题,然后隐藏它)

回答

0

addListener调用移入click处理程序。

+0

这弄乱的东西了 – TIMEX 2010-12-22 01:03:30

0

试试这个

$(function() { 
    var marker; 
    //Location was "set". Perform actions. 
    $("#geocodesubmit").click(function() { 
     var geocoder = new google.maps.Geocoder(); 
     geocoder.geocode({ 
      'address': address 
     }, function (results, status) { 
      if (status == google.maps.GeocoderStatus.OK) { 
       $("#map_canvas").show(); 
       var myOptions = { 
        zoom: 15, 
        center: results[0].geometry.location, 
        mapTypeControl: false, 
        mapTypeId: google.maps.MapTypeId.ROADMAP, 
        scrollwheel: false, 
       }; 
       var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 
       marker = new google.maps.Marker({ 
        map: map, 
        position: results[0].geometry.location, 
        draggable: true 
       }); 
      } 
     }); 

     return false; 
    }); 
    //Marker was dragged. 
    google.maps.event.addListener(marker, "dragend", function() { 
     alert('hi'); 
    }); 
});