2013-08-07 23 views
5

के साथ "बहुत अधिक रिकर्सन" त्रुटि प्राप्त करना मेरे पास एक ऐसा फॉर्म है जो Google Places लाइब्रेरी (demo, एक तरफ जेएसएफआईडीएल में एक Google मानचित्र के साथ लागू करता है, अगर मैं gmaps.js को जोड़ता हूं स्क्रिप्ट संदर्भ यह काम नहीं करेगा लेकिन अगर मैं HTML अनुभाग में ठीक उसी स्क्रिप्ट ठीक काम करता है में एक स्क्रिप्ट तत्व के रूप में जोड़ने) ऐसा इसलिए दिखता है:Google मानचित्र + स्थान लाइब्रेरी

<form action="#" method="post"> 
    <table class='Information table table-bordered'> 
    <caption>Information</caption> 
    <colgroup> 
     <col width='100' /> 
     <col/> 
    </colgroup> 
    <tbody> 
     <tr> 
     <th>Location</th> 
     <td> 
      <div class="input-append"> 
      <input type="text" name="Lat" value="37.771424" /> 
      <span class="add-on">lat.</span> 
      </div> 
      <div class="input-append"> 
      <input type="text" name="Lng" value="-122.41332799999998" /> 
      <span class="add-on">lng.</span> 
      </div> 
     </td> 
     </tr> 
     <tr> 
     <th>Map</th> 
     <td> 
      <div id="panel"> 
      <form class="form-search"> 
       <input type="text" class="input-medium search-query" autocomplete="off" id="target" placeholder="Search Box"/> 
      </form> 
      </div> 
     <div id="ScavengerMap"></div> 
     </td> 
     </tr> 
    </tbody> 
    </table> 
</form> 

निम्न JavaScript के साथ:

var input = document.getElementById('target'), 
    searchBox = new google.maps.places.SearchBox(input), 
    map = new GMaps({ 
    div: '#ScavengerMap', 
    lat: 37.771424, 
    lng: -122.41332799999998 
    }); 
google.maps.event.addListener(searchBox, 'places_changed', function() { 
    var places = searchBox.getPlaces(), 
    location; 
    if (places.length > 0) { 
    location = places[0].geometry.location; 
    map.removeMarkers(); 
    map.setCenter(location.jb, location.kb); 
    map.addMarker({ 
     lat: location.jb, 
     lng: location.kb, 
     title: "Slim\'s", 
     draggable: true, 
     dragend: function (e) { 
      var point = e.latLng; 
      $('input[name=Lat]').val(point.lat()); 
      $('input[name=Lng]').val(point.lng()); 
     } 
    }); 
    $('input[name=Lat]').val(location.jb); 
    $('input[name=Lng]').val(location.kb); 
    } 
}); 

map.addMarker({ 
    lat: 37.771424, 
    lng: -122.41332799999998, 
    title: "Slim\'s", 
    draggable: true, 
    dragend: function (e) { 
    var point = e.latLng; 
    $('input[name=Lat]').val(point.lat()); 
    $('input[name=Lng]').val(point.lng()); 
    } 
}); 

जब आप खोज बॉक्स में कुछ टाइप करते हैं (उदाहरण के लिए "स्लिम") आप एक सेट देखेंगे Google स्थल लाइब्रेरी से सुझावों का। आप किसी एक का चयन करते हैं, तो इसे उस स्थान पर एक मार्कर आकर्षित करने के लिए माना जाता है, लेकिन इसके बजाय मैं इन दो त्रुटियों मिलती है:

too much recursion 
[Break On This Error] 

...))};sa(fg[E],function(a){var b=this.ua,c=Sf(a);b[c]&&(delete b[c],O[m](this,vf,a... 

{main,places}.js (line 26) 
too much recursion 
[Break On This Error] 

....route=function(a,b){Mf("directions",function(c){c.pi(a,b,!0)})};function P(a,b,... 

बात यह है कि मैं बाहर काम कर रहे एक कठिन समय हो रही है क्यों है। इस डेमो में मौजूद कोड मेरे प्रोजेक्ट में कोड का सबसेट है, लेकिन दोनों एक ही समस्या प्रस्तुत करते हैं। मुझे Google स्थल लाइब्रेरी या Google मानचित्र API आउटेज के बारे में कोई जानकारी नहीं मिल रही है, और वीरडर अभी भी यह सटीक कोड 2 सप्ताह पहले (जिस समय मैंने इसे लिखा था) के रूप में काम किया था। इस बारे में कोई विचार कि मैं कम से कम समस्या को कैसे अलग कर सकता हूं?

उत्तर

2

ऐसा लगता है जैसे मैंने इसे समझ लिया। ऐसा लगता है कि गुण .jb और .kb का नाम बदल दिया गया है। lat और lng को पकड़ने के लिए सही विधि places[0].geometry.location ऑब्जेक्ट पर .lat() और .lng() पर कॉल करके है। एक उदाहरण का पालन करने के लिए मेरी गलती बहुत बारीकी से :)

+1

आप 'map.setCenter (location.lb, location.mb) का भी उपयोग कर सकते थे; ':) –

+1

आप किसी वस्तु के अनियंत्रित गुणों का उपयोग करने की सलाह क्यों देंगे (जो कि .lb और .mb हैं)? अगली बार Google ने एक नया संस्करण (या कर सकता है) को फिर से तोड़ दिया होगा। – geocodezip

1

आप अपनी ज़ूम सेटिंग भी देख सकते हैं। यदि आपके पास ज़ूम सेटिंग के लिए कोई संख्या नहीं है तो यह समस्या दिखाई देगी।

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