2012-12-04 22 views
5

मैं यूनी में अपने अंतिम वर्ष प्रोजेक्ट के लिए एक वेब एप्लिकेशन लिखने की कोशिश कर रहा हूं, और मुझे पहली समस्याओं में से एक को ऑटो पूर्ण टेक्स्ट बॉक्स प्राप्त करना है स्थानीय पता इनपुट। मैंने इंटरनेट के चारों ओर कुछ समय बिताया है और Google मानचित्र V3 स्थानों के साथ कुछ समय बिताया है स्वतः पूर्ण प्लगइन।Google मानचित्र एपीआई ऑटोकंपलेट प्रतिबंधित/पूर्वाग्रह मेरे शहर में सड़क पते

कुछ ऐसा है जो मैं एपीआई दस्तावेज़ों पर काफी समझ नहीं पा रहा हूं, जो मुझे उम्मीद थी कि कोई मेरे लिए साफ़ करने में सक्षम हो सकता है, साथ ही शायद मुझे सही दिशा में इंगित कर सकता है।

(क्षेत्र) टाइप संग्रह प्लेस सेवा का निर्देश किसी भी परिणाम निम्न प्रकार के मिलान वापस जाने के लिए:

डॉक्स में

यह इस का कहना है

locality 
sublocality 
postal_code 
country 
administrative_area1 
administrative_area2 

यह है कि क्या मैं वर्तमान में है समझ में नहीं आता, मैं कॉर्नवाल में रहता हूं (बोडिन सटीक होना) और मैं परिणाम पूर्वाग्रह को बोडिन बनाना चाहता हूं।

var input = document.getElementById('inputOne'); 
var defaultBounds = new google.maps.LatLngBounds(
    new google.maps.LatLng(50.423394,-4.803829), 
    new google.maps.LatLng(50.508623,-4.692593)); 

     //need to set bounds to cornwall/bodmin 
     var options = { 
      bounds: defaultBounds, 
      types: ['geocode'], 
      componentRestrictions: {country: 'GB'} 
     }; 
var autocomplete = new google.maps.places.Autocomplete(input,options); 

अब यह काम करता है, लेकिन अगर उदाहरण के लिए मैं "सेंट n" दर्ज मैं यह पहली बार सेंट निकोलस सड़क जो बॉडमिन में है के साथ आने की उम्मीद करेंगे: मैं निम्नलिखित किया है। लेकिन यह सेंट नॉट जैसी चीज़ों के साथ आएगा जो कई मील दूर है।

मेरे यहां एक हिस्सा है जो सोचता है कि मुझे इस प्रकार को एक अलग मूल्य पर सेट करने की आवश्यकता है, लेकिन मैं अभी बहुत सुंदर हूं।

संपादित करें: जो मैं प्राप्त करने का प्रयास कर रहा हूं उसका उदाहरण maps.google.com पृष्ठ पर है यदि आप दर्ज करते हैं, तो बोडिन फिर कर्सर को कॉमा से पहले ले जाएं और सड़क नाम टाइप करना शुरू करें या यहां तक ​​कि असडा इसे रखेगा उस क्षेत्र में क्या है स्थानीय। मैं bodmin टाइप करना नहीं चाहता, लेकिन यह कुछ है जो मैं

पर काम कर सकता है अगर किसी के पास कोई विचार है जो शानदार होगा। तो मुझे यह पता लगाने की आवश्यकता होगी कि उपयोगकर्ता "Asda" जैसे कुछ मानों में कैसे डाल सकता है और स्थानीय एएसडीए पता प्राप्त कर सकता है।

+0

आप componentRestrictions की कोशिश की है: {देश: 'जीबी', उप-क्षेत्र: 'Bodmin'} और/या componentRestrictions: {देश: 'जीबी', इलाके: 'Bodmin' }? –

+0

दुर्भाग्य से यह दस्तावेज से काम करता है: "घटक रेस्त्रां का उपयोग विशिष्ट समूहों को परिणामों को प्रतिबंधित करने के लिए किया जा सकता है। वर्तमान में, आप देश द्वारा फ़िल्टर करने के लिए घटक रेस्त्रां का उपयोग कर सकते हैं" वैसे भी धन्यवाद :) मुझे लगता है कि मुझे इसके साथ रहना होगा जिस तरह से है – Vade

उत्तर

4

वर्तमान में ऊपर दिए गए सीमाओं का उपयोग करने के अलावा परिणामों को सीमित करने के लिए एक विशिष्ट इलाके में परिणामों को प्रतिबंधित करना संभव नहीं है। हालांकि, केवल पक्षपात की ओर इशारा करते हैं, लेकिन निर्दिष्ट सीमाओं में निहित स्थानों तक ही सीमित नहीं हैं।

यदि आपको लगता है कि स्थानीयता का परिणाम उपयोगी सुविधा होगी तो कृपया Places API - Feature Request दर्ज करें।

जैसा कि आपने बताया है, यदि आप अपनी क्वेरी के अंत में ,Bodmin टाइप करते हैं तो स्थानीय परिणामों को वापस करने की संभावना अधिक होती है। AutocompleteService का उपयोग करने के लिए एक अस्थायी समाधान हो सकता है और getPlacePredictions() अनुरोध पैरामीटर के अंत में ,Bodmin संलग्न करें।

+0

क्रिस के जवाब के लिए धन्यवाद, मैंने कुछ समय शोध और परिवर्तनों को बदलकर बिताया और पाया कि यह काफी अच्छा था जिसे मैं प्राप्त करने वाला था। मैंने बोर्ड पर एड्रेस या जगह के अंत में बोडिन को जोड़ने के बारे में सलाह ली है (उदाहरण के लिए हमारे पास एक बिल्ली है जिसे बिल्ली और पहेली कहा जाता है जो डेटाबेस में नहीं है) और ऐसा लगता है कि यह एक इलाज करता है। – Vade

+0

अगर किसी ने इस सुविधा अनुरोध को बनाया है तो कृपया मुझे बताएं ताकि मैं इसे तारांकित कर सकूं। मैंने इसकी तलाश की लेकिन उसे नहीं मिला। – dlsso

0
<div class="well container"> 
    <form role="form"> 
     <div class="form-group"> 
     <label for="locality" class="sr-only">Stadt oder PLZ</label> 
      <input type="text" class="form-control" id="locality" name="locality" placeholder="Stadt oder PLZ" /> 
      <p class="help-block">Bitte zuerst die Stadt oder PLZ eingeben.</p> 
     </div> 
     <div class="form-group"> 
     <label for="route" class="sr-only">Straße/Hausnummer</label> 
     <div class="row"> 
      <div class="col-xs-6"> 
      <input type="text" class="form-control col-xs-8" id="route" name="route" placeholder="Straße" disabled="true" /> 
      </div> 
      <div class="col-xs-6"> 
      <input type="text" class="form-control col-xs-4" id="street_number" name="street_number" placeholder="Nr." disabled="true" /> 
      </div> 
     </div> 
     </div> 
    </form> 
</div> 

<script> 
var localityInput = document.getElementById('locality'); 
var localityOptions = { 
    types: ['geocode'], //['(cities)'], geocode to allow postal_code 
    componentRestrictions: {country: 'de'} 
}; 
autocomplete = new google.maps.places.Autocomplete(localityInput, localityOptions); 

google.maps.event.addListener(autocomplete, 'place_changed', function() { 
    $('#route').attr('disabled', false).focus(); 
    $('#street_number').attr('disabled', false); 

    var boundsByCity = autocomplete.getPlace().geometry.viewport; 
    var routeInput = document.getElementById('route'); 
    var routeOptions = { 
     bounds: boundsByCity, 
     types: ['geocode'] 
    }; 
    new google.maps.places.Autocomplete(routeInput, routeOptions); 
}); 
</script> 

डेमो: jsfiddle

1

सेट क्षेत्रों के प्रकार के।

var options = { 
     bounds: defaultBounds, 
     types: ['(regions)'], 
     componentRestrictions: {country: 'GB'} 
    }; 
    var autocomplete = new google.maps.places.Autocomplete(input,options); 

आशा है कि यह काम करता है ..