2014-06-14 14 views
7

स्थान देता है मैं Google Maps Places Autocomplete एपीआई का उपयोग कर रहा हूं।Google मानचित्र स्वत: पूर्ण लोडिंग ईवेंट

स्वत: पूर्ण ड्रॉपडाउन प्रदर्शित होने से पहले, मैं खोज के दौरान एक अजाक्स स्पिनर दिखाना चाहता हूं।

मैं कैसे निर्धारित कर सकता हूं कि स्थान के परिणाम कब तैयार हैं? क्या कुछ घटना बंद हो गई है?

यह खराब इंटरनेट कनेक्शन पर विशेष रूप से सहायक है क्योंकि विलंबता कभी-कभी 5 सेकंड तक हो सकती है। प्रयोक्ता को खोज करने के लिए धीरे-धीरे दबाए जाने से पहले खोज बॉक्स को एक स्वत: पूर्ण इनपुटबॉक्स पता होना चाहिए।

+0

क्या आपने ऑटो पूर्ण करने के बजाए अपना नियंत्रण लिखने की कोशिश की है, बस जियोकोडर सेवा का उपयोग करें? कुंजी पर (एक सेकंड के बाद एक जियोकोड करें, अपने स्पिनर को दिखाएं, फिर जियोकोड पर स्पिनर को छुपाएं और कुछ परिणाम विकल्पों के साथ एक सूची दिखाएं। –

+0

@loanburger मैंने कोशिश की, केवल 1 http से ही इसे थोड़ा सा दुबला कॉल प्रति प्रश्न और चयनित आइटम बनाया जाएगा। यदि आप एपीआई के Google का उपयोग करते हैं तो सार्वजनिक रूप से एपीआई ऑफ़र (निर्देशांक और आपके द्वारा चुने गए बारे में जानकारी सहित) को दोहराने के लिए एक से अधिक कॉल लेते हैं। Google आपके अनुरोधों को अवरुद्ध नहीं करेगा जितना अधिक – Akshat

+0

अरे, खोज करने के लिए एंटर दबाकर भी एक वैध ऑपरेशन है, अगर Google मानचित्र हमें ऐसा करने देता है, तो आप अपने उपयोगकर्ताओं को ऐसा क्यों नहीं करना चाहिए? इस डेमो को देखें, यह भी करता है: https: // google -developers.appspot.com/maps/documentation/utils/geocoder/ – miguev

उत्तर

2

आप क्वेरी भविष्यवाणियों को प्राप्त करने के लिए स्वत: पूर्ण सेवा का उपयोग कर सकते हैं। इसमें एक कॉलबैक फ़ंक्शन है।

आपके द्वारा प्रदान किए गए लिंक से उदाहरण पर, आप स्क्रिप्ट में वैश्विक चर के रूप में इनपुट घोषित कर सकते हैं। और के बाद स्वत: पूर्ण सेवा साथ पहुँच यह प्रारंभ समारोह:

var input; 
function initialize() { 
    ... 
    input = document.getElementById('pac-input'); 
    ... 
} 

function showSpinner() { 
    document.getElementById('spinner').style.display = 'block'; 

    var service = new google.maps.places.AutocompleteService(); 
    service.getQueryPredictions({ input: input }, callback); 
} 

function callback(predictions, status) { 
    if (status != google.maps.places.PlacesServiceStatus.OK) { 
    document.getElementById('spinner').style.display = 'none'; 
    return; 
    } 
} 

एचटीएमएल दस्तावेज़ में परिवर्तन के लिए के रूप में:

<body> 
    <input id="pac-input" class="controls" type="text" 
     placeholder="Enter a location" onkeypress="showSpinner()"> 
    <img id="spinner" src="spinner.gif" style="position:absolute; top:0; right:0; width: 250px; display: none"> 
    </body> 

मैं यह कार्य तभी एक दूसरा टाइमआउट चल पाएंगे (यानी यदि उपयोगकर्ता का इंटरनेट कनेक्शन धीमा है), अन्यथा स्पिनर एक अशिष्ट छवि की तरह दिखता है।

संबंधित मुद्दे