自动完成onClick位置图

时间:2016-05-17 18:35:28

标签: google-maps google-maps-api-3

我有一个脚本,它有2个输入字段,原点和目的地,并根据此信息输出我所在的区域。并且工作正常,如果有人试图测试它将地址自动完成工作的魅力,我唯一的问题是包括一个功能,通过鼠标点击插入地址自动完成,自动完成不会启动,只是自由。所有这些逻辑都插入到上面的事件列表中:

var origin_input = document.getElementById('origin-input');
  var destination_input = document.getElementById('destination-input');

var counter = 0;
  //Add listener
google.maps.event.addListener(map, 'click', function(event) {

  pos.lat = event.latLng.lat();
  pos.lng = event.latLng.lng();


  var latLng = new google.maps.LatLng(pos.lat, pos.lng);
      geocoder.geocode({       
        latLng: latLng     
        }, 
        function(responses) 
        {     

           if (responses && responses.length > 0) 
           {        

            counter+=1; 
            if(counter == 1){
              origin_input.value= responses[0].formatted_address;
            }else if(counter == 2){
              destination_input.value=responses[0].formatted_address;
              //console.log(responses[0].formatted_address);    
            }

           } 
           else 
           {       
             alert('Not getting Any address for given latitude and longitude.');     
           }   
        }
);

})

脚本链接: http://jsbin.com/mujedamoqo/1/edit?html,output

1 个答案:

答案 0 :(得分:1)

我不确定你是什么意思"自动完成功能没有启动,只是通过" ,你只需设置输入的值,并且这适合我。

什么行不通:2点击后计数器将大于2,两个条件都不会匹配。

修复(将在2个输入之间切换):

google.maps.event.addListener(map, 'click', function(event) {

  pos.lat = event.latLng.lat();
  pos.lng = event.latLng.lng();


  var latLng = new google.maps.LatLng(pos.lat, pos.lng);
      geocoder.geocode({       
        latLng: latLng     
        }, 
        function(responses) 
        {     

           if (responses && responses.length > 0) 
           {        
            counter=(counter)?0:1; 
            if(counter){
              origin_input.value= responses[0].formatted_address;
              origin_autocomplete.set('place',responses[0]);
              google.maps.event.trigger(origin_autocomplete,'place_changed');
            }else {
              destination_input.value=responses[0].formatted_address;
              destination_autocomplete.set('place',responses[0]);
              google.maps.event.trigger(destination_autocomplete,'place_changed');
            }

           } 
           else 
           {       
             alert('Not getting Any address for given latitude and longitude.');     
           }   
        });

});