2015-11-21 9 views
9

सेट करने के बाद अपरिभाषित लौटाता है मुझे मानचित्र पर रखे गए अंतिम पिन पर 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) 

उत्तर

3

यह अपनी स्वतः पूर्ण दिखाई सीमा से प्रारंभ की आवश्यकता का अभाव या तो नक्शे

initSearch = -> 
    autocomplete = new (google.maps.places.Autocomplete(     
    document.getElementById('location-query'), types: [ 'geocode' ]) 
    autocomplete.bindTo('bounds', map) 
    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() 

या एक विशिष्ट स्थान अपने ट्यूटोरियल से

var defaultBounds = new google.maps.LatLngBounds(
    new google.maps.LatLng(-33.8902, 151.1759), 
    new google.maps.LatLng(-33.8474, 151.2631)); 

var input = document.getElementById('searchTextField'); 
var options = { 
    bounds: defaultBounds, 
    types: ['establishment'] 
}; 
autocomplete = new google.maps.places.Autocomplete(input, options); 

लिंक के माध्यम के https://developers.google.com/maps/documentation/javascript/places-autocomplete#add_autocomplete

प्रलेखन से लिंक https://developers.google.com/maps/documentation/javascript/examples/places-autocomplete

+0

बढ़िया! मैं आपका पहला समाधान प्राप्त करने में सक्षम था, 'autocomplete.bindTo' काम कर रहा था। हालांकि, यह नक्शा वर्तमान व्यूपोर्ट को बांधता है, और इसे मानचित्र पर रखे गए आखिरी पिन पर बांधने की कोशिश करता है। आपका दूसरा समाधान हमेशा पहले 'console.log' को डिफ़ॉल्ट बाउंड पर सेट करता है। जब भी स्थान बदल जाता है, तो मैं पूर्वाग्रह को पूर्वाग्रहों में कैसे सेट कर सकता हूं? – CHawk

+0

अपना अंक प्राप्त करने के लिए 100% निश्चित नहीं है; यदि आप डिफ़ॉल्ट सीमा निर्धारित करते हैं, तो हम सहमत हैं कि आपको श्रोता कॉलबैक के बाहर से इसे बनाने की आवश्यकता है अन्यथा, यह हमेशा उपयोगकर्ता इनपुट को ओवरराइट करेगा। इसके अलावा, जब आप पूर्वाग्रह से सीमा निर्धारित करते हैं, तो कुछ भी गलत नहीं है जिसे मैं देख सकता हूं। –

+0

मेरा वर्तमान कोड शामिल करने के लिए मेरे प्रश्न को संपादित करें। मुझे श्रोता कॉलबैक के बाहर सीमाओं को सेट करने का प्रयास किया गया है, लेकिन मुझे अपनी मूल त्रुटि मिल रही है (प्रत्येक पहली कॉल के साथ अपरिभाषित)। – CHawk

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