5

मैंने एपीआई v3 का उपयोग कर एक Google मानचित्र स्थापित किया है। मानचित्र में इन्फोबॉक्स संलग्न किए गए कई मार्कर हैं। मैं उपयोगकर्ता के पते को इनपुट करने के लिए मानचित्र के बाहर एक खोज बॉक्स सेट अप करना चाहता हूं और उसके बाद दूरी के आधार पर निकटतम मार्कर लौटाए हैं (जैसे त्रिज्या खोज)।Google मानचित्र API - स्थान का उपयोग कर मार्करों के लिए त्रिज्या खोज?

एपीआई दस्तावेज से मुझे लगता है कि मुझे स्थान सेवाओं का उपयोग करने की आवश्यकता है। क्या कोई मुझे सही दिशा दिखा सकता है?

+0

आप केवल यदि आप वें से परिणाम की तलाश में हैं तो स्थान API का उपयोग करने की आवश्यकता है ई प्लेस एपीआई। यदि आप अपने खुद के मार्कर वापस लौट रहे हैं, तो आपको Google मानचित्र API v3 का उपयोग करके इसे लागू करने की आवश्यकता है। – geocodezip

+0

आपका मौजूदा कोड कैसा दिखता है? – geocodezip

उत्तर

14

एपीआई के साथ त्रिज्या खोज करने के लिए, प्रत्येक मार्कर और पते से geocoded परिणाम के बीच की दूरी की गणना करने के लिए Geometry Librarygoogle.maps.geometry.spherical.computeDistanceBetween विधि का उपयोग करें। यदि वह दूरी अनुरोधित त्रिज्या से कम है, तो मार्कर दिखाएं, और इसे छुपाएं।

कोड मान लिया गया है:

  1. google.maps.Markers की सरणी कहा जाता gmarkers
  2. google.maps.Map वस्तु बुलाया नक्शा

    function codeAddress() { 
        var address = document.getElementById('address').value; 
        var radius = parseInt(document.getElementById('radius').value, 10)*1000; 
        geocoder.geocode({ 'address': address}, function(results, status) { 
        if (status == google.maps.GeocoderStatus.OK) { 
         map.setCenter(results[0].geometry.location); 
         var marker = new google.maps.Marker({ 
         map: map, 
         position: results[0].geometry.location 
         }); 
         if (circle) circle.setMap(null); 
         circle = new google.maps.Circle({center:marker.getPosition(), 
                radius: radius, 
                fillOpacity: 0.35, 
                fillColor: "#FF0000", 
                map: map}); 
         var bounds = new google.maps.LatLngBounds(); 
         for (var i=0; i<gmarkers.length;i++) { 
         if (google.maps.geometry.spherical.computeDistanceBetween(gmarkers[i].getPosition(),marker.getPosition()) < radius) { 
          bounds.extend(gmarkers[i].getPosition()) 
          gmarkers[i].setMap(map); 
         } else { 
          gmarkers[i].setMap(null); 
         } 
         } 
         map.fitBounds(bounds); 
    
        } else { 
         alert('Geocode was not successful for the following reason: ' + status); 
        } 
        }); 
    } 
    

example

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