सेट करने के बाद अपरिभाषित लौटाता है मुझे मानचित्र पर रखे गए अंतिम पिन पर Google मानचित्र स्वत: पूर्ण परिणामों के पूर्वाग्रहों को पूर्वाग्रह करने का प्रयास करने में कोई समस्या आ रही है। मैं गूगल के ट्यूटोरियल यहाँ अनुसरण कर रहा हूं: इस प्रकार https://developers.google.com/maps/documentation/javascript/places-autocomplete#change_search_areaGoogleMaps v3 autocomplete.getBounds()
मेरे CoffeeScript कोड है:
initSearch = ->
autocomplete = new (google.maps.places.Autocomplete)(document.getElementById('location-query'), types: [ 'geocode' ])
autocomplete.addListener 'place_changed', ->
place = autocomplete.getPlace()
addDestination(place, map, insertIndex) #places pin on map
console.log 'autocomplete bounds (before): ' + autocomplete.getBounds()
#setting bounds around new place
biasCircle = new google.maps.Circle
center: place.geometry.location
radius: 500 #in kilometers
autocomplete.setBounds(biasCircle.getBounds())
console.log 'autocomplete bounds (after): ' + autocomplete.getBounds()
निम्नलिखित में से कौन जावास्क्रिप्ट में संकलित:
initSearch = function() {
var autocomplete;
autocomplete = new google.maps.places.Autocomplete(document.getElementById('location-query'), {
types: ['geocode']
});
return autocomplete.addListener('place_changed', function() {
var biasCircle;
place = autocomplete.getPlace();
addDestination(place, map, insertIndex);
console.log('autocomplete bounds (before): ' + autocomplete.getBounds());
biasCircle = new google.maps.Circle({
center: place.geometry.location,
radius: 500
});
autocomplete.setBounds(biasCircle.getBounds());
return console.log('autocomplete bounds (after): ' + autocomplete.getBounds());
});
};
पिन सही ढंग पर रखा गया है नक्शा, लेकिन इससे कोई फर्क नहीं पड़ता कि मैं कितने स्थान जोड़ता हूं, console.logs हमेशा वापस आते हैं:
autocomplete bounds (before): undefined
autocomplete bounds (after): ((9.923577823579402, -84.09528446042509), (9.932560976420598, -84.08616473957488))
सीमाएं सही ढंग से सेट की जा रही हैं (जैसा कि दूसरे console.log
द्वारा दिखाया गया है), लेकिन परिणाम वास्तव में पक्षपातपूर्ण नहीं हैं और पहले व्यक्ति हमेशा अनिर्धारित होते हैं।
परीक्षण का मामला हम अगर परिणाम पक्षपाती किया जा रहा है परीक्षण करने के लिए प्रयोग कर रहे हैं कर रहे हैं: 1. प्रकार 'सैन जोस' स्वत: पूर्ण में (शीर्ष परिणाम अमेरिका में होना चाहिए) 2. एक के रूप में जोड़े 'Limon, कोस्टा रिका' नक्शे पर 3. प्रकार 'के सैन जोस' स्वतः पूर्ण में मार्कर, शीर्ष परिणाम सैन जोस कोस्टा रिका
हमने सोचा कि यह scoping की कोई समस्या हो सकती होना चाहिए, इसलिए हम हर जगह window.autocomplete
कोशिश की और अब भी वही समस्या हुई। हमने स्वत: पूर्ण सीमाओं को एक अलग विधि में सेट करने की कोशिश की (जगह_changed घटना के बजाय, लेकिन यह भी काम नहीं किया)।
आपकी मदद के लिए अग्रिम धन्यवाद!
अद्यतन: सेड्रिक की सलाह पर सेड्रिक के जवाब कोशिश कर रहा है, मैं श्रोता कॉलबैक के बाहर सीमा (विधि श्रोता के भीतर से कहा जाता है) स्थापित करने के लिए कोशिश कर रहा हूँ, लेकिन मैं अभी भी एक ही मुद्दा हो रही है। नए कोड:
#Sets autocomplete bias
setAutocompleteBias = (place) ->
console.log 'autocomplete bounds (before): ' + window.autocomplete.getBounds()
#setting bounds around new place
biasCircle = new google.maps.Circle
center: place.geometry.location
radius: 500 #in kilometers
window.autocomplete.setBounds(biasCircle.getBounds())
console.log 'autocomplete bounds (after): ' + window.autocomplete.getBounds()
window.autocomplete = null
#Autocomplete search box initialization
initSearch = ->
window.autocomplete = new (google.maps.places.Autocomplete)(document.getElementById('location-query'), types: [ 'geocode' ])
#autocomplete.bindTo('bounds', map)
window.autocomplete.addListener 'place_changed', ->
place = window.autocomplete.getPlace()
addDestination(place, map, insertIndex)
setAutocompleteBias(place)
बढ़िया! मैं आपका पहला समाधान प्राप्त करने में सक्षम था, 'autocomplete.bindTo' काम कर रहा था। हालांकि, यह नक्शा वर्तमान व्यूपोर्ट को बांधता है, और इसे मानचित्र पर रखे गए आखिरी पिन पर बांधने की कोशिश करता है। आपका दूसरा समाधान हमेशा पहले 'console.log' को डिफ़ॉल्ट बाउंड पर सेट करता है। जब भी स्थान बदल जाता है, तो मैं पूर्वाग्रह को पूर्वाग्रहों में कैसे सेट कर सकता हूं? – CHawk
अपना अंक प्राप्त करने के लिए 100% निश्चित नहीं है; यदि आप डिफ़ॉल्ट सीमा निर्धारित करते हैं, तो हम सहमत हैं कि आपको श्रोता कॉलबैक के बाहर से इसे बनाने की आवश्यकता है अन्यथा, यह हमेशा उपयोगकर्ता इनपुट को ओवरराइट करेगा। इसके अलावा, जब आप पूर्वाग्रह से सीमा निर्धारित करते हैं, तो कुछ भी गलत नहीं है जिसे मैं देख सकता हूं। –
मेरा वर्तमान कोड शामिल करने के लिए मेरे प्रश्न को संपादित करें। मुझे श्रोता कॉलबैक के बाहर सीमाओं को सेट करने का प्रयास किया गया है, लेकिन मुझे अपनी मूल त्रुटि मिल रही है (प्रत्येक पहली कॉल के साथ अपरिभाषित)। – CHawk