2010-08-21 8 views
8

किसी कारण से Google मानचित्र v3 के लिए getBounds() फ़ंक्शन वास्तव में मानचित्र दिखा रहा है उससे कहीं अधिक विस्तारित प्रतीत होता है। अगर मैं गलत हूं, तो मुझे सही करें, लेकिन क्या वर्तमान दृश्य में जो दिखाया जा रहा है उसके बहुत कोनों के लिए एनई (शीर्ष दाएं कोने) और एसडब्ल्यू (निचला बाएं कोने) अक्षांश और देशांतर समन्वय वापस नहीं करना चाहिए?Google मानचित्र v3 getbounds मानचित्र पर दिखाई देने से परे विस्तारित है

मैं खोज परिणामों (जो एक लैट और एलएनजी द्वारा मैप किए गए हैं) लौट रहे हैं जो इन निर्देशांकों के बीच हैं और getBounds() द्वारा लौटाए गए क्षेत्र के बाहर परिणाम लौटा रहे हैं। यहां क्या हो सकता है इसके बारे में कोई विचार?

बस FYI करें, मैं नक्शा के निष्क्रिय घटना पर सीमा हो रही है:

google.maps.event.addListener(map, 'idle', function() { 

var bounds = map.getBounds(); 
var NE = bounds.getNorthEast(); 
var SW = bounds.getSouthWest(); 

... और .lat() और .lng() का उपयोग कर संबंधित कोनों से निर्देशांक पाने के लिए। फिर मैं इसे एक SQL क्वेरी में फ़ीड करता हूं जो उन निर्देशांक के बीच परिणामों की जांच करता है। परिणाम सामान्य क्षेत्र में हैं लेकिन मानचित्र पर वास्तव में दिखाए जा रहे लोगों के बाहर कहीं भी गिर सकते हैं।

किसी भी विचार की सराहना की जाती है! धन्यवाद!

+0

नोट: यह वास्तव में कुछ मार्करों जा रहा है दिखाएँ/नहीं दिख रहा और गलत खोज परिणाम से बंधा जा रहा है के साथ एक बहुत गहरे बग के कारण था। Google, ज़ाहिर है, सही परिणाम लौट रहा था। – Ryan

उत्तर

17

सही, map.getBounds() दृश्यमान क्षेत्र की सीमाएं वापस कर देगा, जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है। इस उदाहरण में, idle ईवेंट आग लगने पर map.getBounds() के बिंदुओं का उपयोग करके लाल Polyline बॉक्स खींचा जाता है।

आपकी SQL क्वेरी उन परिणामों को वापस नहीं लौट रही है जिन्हें आप ढूंढ रहे हैं, और फिर से देखने की आवश्यकता हो सकती है।

<!DOCTYPE html> 
<html> 
<head> 
<title>Bounds Box</title> 
<script type="text/javascript" 
    src="http://maps.google.com/maps/api/js?sensor=false"> 
</script> 
<script type="text/javascript"> 
     function initialize() { 

     var latlng = new google.maps.LatLng(30.405865,-87.283362); 
     var myOptions = { 
      zoom: 8, 
      center: latlng, 
      mapTypeId: google.maps.MapTypeId.ROADMAP 
     }; 
     var map = new google.maps.Map(document.getElementById("map_canvas"), 
      myOptions); 
     var viewportBox; 

     google.maps.event.addListener(map, 'idle', function(event) { 
      var bounds = map.getBounds(); 

      var ne = bounds.getNorthEast(); 
      var sw = bounds.getSouthWest(); 

      var viewportPoints = [ 
       ne, new google.maps.LatLng(ne.lat(), sw.lng()), 
       sw, new google.maps.LatLng(sw.lat(), ne.lng()), ne 
      ]; 
      /*strokeOpacity = 0 , if don't want to show the border moving. */ 
      if (viewportBox) { 
       viewportBox.setPath(viewportPoints); 
      } else { 
       viewportBox = new google.maps.Polyline({ 
        path: viewportPoints, 
        strokeColor: '#FF0000', 
        strokeOpacity: 1.0, 
        strokeWeight: 4 
       }); 
       viewportBox.setMap(map); 
      }; 

      var info = document.getElementById('info'); 
      info.innerHTML = 'NorthEast: ' + ne.lat() + ' ' + ne.lng() + 
       '<br />' + 'SouthWest: ' + sw.lat() + ' ' + sw.lng(); 
     }); 
     }; 
</script> 
</head> 
<body onload="initialize()"> 
    <div id="map_canvas" style="width:500px; height:500px"></div> 
    <div id="info"></div> 
</body> 
</html> 
+1

हाँ, यह वास्तव में मार्करों के साथ एक अलग बग था जो मुझे मिश्रित कर रहा था। सीमा दिखाने के लिए अच्छा डेमो, धन्यवाद। – Ryan

+0

+1 अच्छा जवाब @Eric :) –

+0

@Ryan क्या आपको मार्करों के साथ बग मिला? मुझे भी यही तकलीफ़ है! –

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