2017-04-17 8 views
-1

私はページロード時にクエリ文字列から場所を入力するところですが、google map apiを使用していますが、選択リストを開いて手動で選択します(画面:)。 他の関数は(場所の選択を手動後呼び出す)Googleの場所のplace_changedイベントをトリガする方法

geocoder = new google.maps.Geocoder(); 

cityac = new google.maps.places.Autocomplete((document.getElementById('message_city')), { types: ['geocode'], componentRestrictions: {country:"GB"} }); 

google.maps.event.addListener(cityac, 'place_changed', function() { city_select(); }); 

function city_select() { 
     var city = jQuery("#message_city").val(); 

     var place = cityac.getPlace(); 
     if ((place.address_components[1].short_name == 'London') || (jQuery('#message_city').val() == 'London, United Kingdom')) { 
      jQuery('#result_info').val('<br />London Not Covered '); 
      jQuery('#result').val('no'); 
     } else { 
      geocoder.geocode({'address': city}, function (results, status) { 
       if (status == google.maps.GeocoderStatus.OK) { 
        var search = results[0].geometry.location; 
        var mindist = parseInt(10000); 
        var closest = 0; 
        var town = ''; 

        for (var i = 0; i < locations.length; i++) { 
         var exp = locations[i].split('#'); 
         var loc = new google.maps.LatLng(exp[1], exp[2]) 
         var distance = calcDistance(loc, search); 
         var miles = parseInt((distance * 0.621371192).toFixed(2)); 

         if (mindist > miles) { 
          mindist = miles; 
          closest = i; 
          nohour = exp[3]; 
          town = exp[0]; 
          radius = exp[5]; 

          if (radius == '') { 
           radius = 30; 
          } 
          else { 
           radius = parseInt(radius); 
          } 
         } 

        } 
        if (mindist <= radius) { 
         jQuery('#result_info').val('Closest Location is ' + town + ' | ' + mindist + ' miles'); 
         jQuery('#result_city').val(town); 
         jQuery('#result').val('yes'); 

         if (nohour == '1') { 
          //alert('This location has a minimum 2 hour time'); 
          jQuery("#serviceHrs option[value='1']").remove(); 
          jQuery("#serviceHrs").parent().after("<div class='infomsg' style='color:#ff0099;margin-bottom: 0;'>This location has a minimum of 2 hours.</div>"); 
         } 
         else if (nohour == '0') { 
          jQuery(".infomsg").remove(); 
          if (jQuery("#serviceHrs option:contains('1')").length == 0) { 
           jQuery("#serviceHrs").prepend(new Option("1 Hour", "1")); 
          } 
         } 
        } else { 
         jQuery('#result_info').val('<br />Closest Location is ' + town + ' | ' + mindist + ' miles, outside the ' + radius + ' mile zone of any current.'); 
         jQuery('#result').val('no'); 
        } 
       } 
      }) 
     } 
    } 

を呼び出すことができるように、私はちょうど私がコードの下にしようとしています(クエリ文字列から)message_cityの値を設定した後pageloadにplace_changedイベントをトリガしたいが、それはありますうまく動作しません。

google.maps.event.trigger(cityac, 'place_changed'); 

答えて

0

私は私はあなたが必要とする正確に理解していますが、イベントをトリガしたい場合は、あなたがgoogle.maps.event.trigger(autocomplete, 'place_changed');を使用することができるかどうかわかりません。それはトリックを行う必要があります。

その場合は教えてください。

+0

はい、私は同じことをしようとしていますが、選択リスト(スクリーンショット:http://prnt.sc/exg338) – Vaishnavesh

+0

を開いていますが、それを最初に選択する必要があります – Vaishnavesh

関連する問題