26

के लिए 'place_changed' के अलावा अन्य ईवेंट मेरे पास एक ऐसा ऐप है जो वर्तमान में place_changed पर सही ढंग से आग लगाता है।Google मानचित्र Autocomplete

हालांकि, जब उपयोगकर्ता ने स्वत: पूर्ण प्रविष्टि का चयन किया है, और जब उन्होंने स्वत: पूर्ण सहायता के बिना स्वयं टेक्स्ट दर्ज किया है, तो मैं अलग-अलग व्यवहार करने के लिए खोज करना चाहता हूं।

भेदभाव करने के लिए मुझे किस प्रकार के ईवेंट श्रोता का उपयोग करना चाहिए? मुझे Google मानचित्र Autocomplete के लिए अन्य ईवेंट पर कोई दस्तावेज़ नहीं मिल रहा है।

क्या मैं अब है: आप इसे करने के लिए मानक HTML घटना श्रोताओं जोड़ सकते हैं

var gmaps = new google.maps.places.Autocomplete($("#searchproperties").get(0), 
{ types: ['geocode'], componentRestrictions: {country: 'us'} }); 

google.maps.event.addListener(gmaps, 'place_changed', function() { 
    //FIRE SEARCH 
}); 

उत्तर

8

वहाँ google.maps.places.Autocomplete class के लिए गूगल मानचित्र Javascript API v3 में केवल एक ही दस्तावेज घटना, place_changed

है (यकीन नहीं अगर वह स्वत: पूर्ण कार्यक्षमता को प्रभावित करेगा)।

+1

समस्या मैं सामना करना पड़ा है कि कलंक और गूगल 'place_changed' घटना से पहले की घटनाओं आग बदल रहा है। इससे यह जानना मुश्किल हो जाता है कि वास्तव में क्या हुआ। –

0

यदि आप अपना इनपुट हैंडलर जोड़ते हैं (उदाहरण के लिए उपयोगकर्ता अपने पाठ में प्रवेश करने के बाद सीआर पकड़ना), स्वतः पूर्ण और आपका फ़ंक्शन आपकी विधि को वापस कॉल कर सकता है। मेरे समाधान थ्रोटल उपयोग करने के लिए बार-बार कॉल से बचने के लिए है:

$('#sell_address_input').keyup(function(e){ if(e.keyCode==13){throttle(addressEntered(),1000)}}); 

....

function throttle(callback, limit) { 
    var wait = false;    // Initially, we're not waiting 
    return function() {   // We return a throttled function 
     if (!wait) 
     {       // If we're not waiting 
      callback.call();  // Execute users function 
      wait = true;   // Prevent future invocations 
      setTimeout(function() 
      {      // After a period of time 
      wait = false;   // And allow future invocations 
      }, limit); 
     } 
    } 
}