代码之家  ›  专栏  ›  技术社区  ›  miojamo

javascript变量

  •  2
  • miojamo  · 技术社区  · 14 年前

    我需要访问javascript变量:

    var geocoder = new google.maps.Geocoder();

    function geocodePosition(pos) {    
      geocoder.geocode({    
        latLng: pos    
      }, function(responses) {  
        if (responses && responses.length > 0) {  
          updateMarkerAddress(responses[0].formatted_address);  
        } else {  
          updateMarkerAddress('Cannot determine address at this location.');  
        }  
      });  
    }  
    
    function updateMarkerStatus(str) {  
      document.getElementById('markerStatus').innerHTML = str;  
    }  
    
    function updateMarkerPosition(latLng) {  
      document.getElementById('info').innerHTML = [  
        latLng.lat(),  
        latLng.lng()  
      ].join(', ');  
    }  
    
    function updateMarkerAddress(str) {  
      document.getElementById('address').innerHTML = str;  
    } 
    
    
    
    function initialize() {  
    
      geocoder.geocode( { 'address': 'london'}, function(results, status) {
       rr = results[0].geometry.location;
    });
    
     var latLng = new google.maps.LatLng(rr);  
    
      var map = new google.maps.Map(document.getElementById('mapCanvas'), {  
        zoom: 8,  
        center: latLng,  
        mapTypeId: google.maps.MapTypeId.ROADMAP
      });
      var marker = new google.maps.Marker({
        position: latLng,
        title: 'Point A',
        map: map,
        draggable: true
      });  
    
      // Update current position info.  
      updateMarkerPosition(latLng);  
      geocodePosition(latLng);  
    
      // Add dragging event listeners.  
      google.maps.event.addListener(marker, 'dragstart', function() {  
        updateMarkerAddress('Dragging...');  
      });  
    
      google.maps.event.addListener(marker, 'drag', function() {  
        updateMarkerStatus('Dragging...');    
        updateMarkerPosition(marker.getPosition());  
      });  
    
      google.maps.event.addListener(marker, 'dragend', function() {  
        updateMarkerStatus('Drag ended');  
        geocodePosition(marker.getPosition());  
      });  
    
    
    // Onload handler to fire off the app.  
    google.maps.event.addDomListener(window, 'load', initialize);    
    

    这是整个脚本,我需要先接近地址,然后通过某种方式将地址转换为ltlng

    2 回复  |  直到 14 年前
        1
  •  4
  •   Nick Craver    14 年前

    您必须在回调中访问或传递它,如下所示:

    var rr;      
    geocoder.geocode( { 'address': 'london'}, function(results, status) {
      rr = results[0].geometry.location;
      alert(rr);    
    });
    

    或将其传递给另一个函数以对数据执行其他操作:

    geocoder.geocode( { 'address': 'london'}, function(results, status) {
      anotherFunction(results[0].geometry.location);
    });
    

    geocode() 函数,意味着它运行 后来 ,所以 rr 准备好了 之后 你的 alert() 目前。

        2
  •  0
  •   Darin Dimitrov    14 年前

    调用是异步的,这意味着 geocoder.geocode 将立即返回,并且只有在匿名回调函数中您才能访问它。

    geocoder.geocode( { 'address': 'london'}, function(results, status) {
       alert(results[0].geometry.location);
    });